Changeset 3582

Show
Ignore:
Timestamp:
04/14/08 17:05:28
Author:
pvanhoof
Message:

Reverted the playing around, added a small ad-hoc solution

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libtinymail-camel/camel-lite/camel/camel-object.c

    r3579 r3582  
    19681968        } 
    19691969 
    1970         g_assert(res != NULL); 
    1971         g_assert(res->have_owner && pthread_equal(res->owner, pthread_self())); 
    1972  
    1973         if (res->waiters > 0) { 
    1974                 b(printf("unreserve bag '%s', waking waiters\n", (char *)key)); 
    1975                 res->have_owner = FALSE; 
    1976                 g_cond_signal(res->cond); 
    1977         } else { 
    1978                 b(printf("unreserve bag '%s', no waiters, freeing reservation\n", (char *)key)); 
    1979                 resp->next = res->next; 
    1980                 bag->free_key(res->key); 
    1981                 g_cond_free(res->cond); 
    1982                 g_free(res); 
     1970        if (res) { 
     1971                g_assert(res->have_owner && pthread_equal(res->owner, pthread_self())); 
     1972 
     1973                if (res->waiters > 0) { 
     1974                        b(printf("unreserve bag '%s', waking waiters\n", (char *)key)); 
     1975                        res->have_owner = FALSE; 
     1976                        g_cond_signal(res->cond); 
     1977                } else { 
     1978                        b(printf("unreserve bag '%s', no waiters, freeing reservation\n", (char *)key)); 
     1979                        resp->next = res->next; 
     1980                        bag->free_key(res->key); 
     1981                        g_cond_free(res->cond); 
     1982                        g_free(res); 
     1983                } 
    19831984        } 
    19841985} 
  • trunk/libtinymail-camel/camel-lite/camel/camel-session.c

    r3580 r3582  
    194194        service = camel_object_bag_reserve(provider->service_cache[type], url); 
    195195        if (service == NULL || service->url == NULL) { 
    196                 gboolean dontres = FALSE; 
    197  
    198                 if (service) { 
    199                         camel_object_bag_abort(provider->service_cache[type], url); 
     196 
     197                if (service) /* url was NULL :-\ */ 
    200198                        ((CamelObject *)service)->ref_count--; 
    201                         dontres = TRUE; 
    202                 } 
    203199 
    204200                service = (CamelService *)camel_object_new (provider->object_types[type]); 
     
    209205                        camel_object_unref (service); 
    210206                        service = NULL; 
    211                         if (!dontres) 
    212                                 camel_object_bag_abort(provider->service_cache[type], url); 
    213                 } else if (!dontres) { 
     207                        camel_object_bag_abort(provider->service_cache[type], url); 
     208                } else { 
    214209                        camel_object_bag_add(provider->service_cache[type], url, service); 
    215210                } 
     
    287282                        return NULL; 
    288283                } 
     284        } else { 
    289285        } 
    290286 
  • trunk/libtinymail-camel/tny-camel-account.c

    r3575 r3582  
    180180                        camel_exception_clear (apriv->ex); 
    181181 
    182                 if (!apriv->service || !apriv->service->url) { 
     182                if (!apriv->service) { 
    183183                        url = camel_url_new (proto, apriv->ex); 
    184184                        urlneedfree = TRUE; 
     
    19951995 
    19961996        if (priv->service && CAMEL_IS_OBJECT (priv->service)) { 
    1997                 if (priv->service->url) 
    1998                         camel_url_free (priv->service->url); 
    1999                 priv->service->url = NULL; 
     1997                if (priv->service->url) { 
     1998                        /* known leak to enforce creating a new service */ 
     1999                        priv->service->url->user = NULL; 
     2000                } 
    20002001                camel_object_unref (CAMEL_OBJECT (priv->service)); 
    20012002        }