Changeset 3582
- Timestamp:
- 04/14/08 17:05:28
- Files:
-
- trunk/libtinymail-camel/camel-lite/camel/camel-object.c (modified) (1 diff)
- trunk/libtinymail-camel/camel-lite/camel/camel-session.c (modified) (3 diffs)
- trunk/libtinymail-camel/tny-camel-account.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libtinymail-camel/camel-lite/camel/camel-object.c
r3579 r3582 1968 1968 } 1969 1969 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 } 1983 1984 } 1984 1985 } trunk/libtinymail-camel/camel-lite/camel/camel-session.c
r3580 r3582 194 194 service = camel_object_bag_reserve(provider->service_cache[type], url); 195 195 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 :-\ */ 200 198 ((CamelObject *)service)->ref_count--; 201 dontres = TRUE;202 }203 199 204 200 service = (CamelService *)camel_object_new (provider->object_types[type]); … … 209 205 camel_object_unref (service); 210 206 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 { 214 209 camel_object_bag_add(provider->service_cache[type], url, service); 215 210 } … … 287 282 return NULL; 288 283 } 284 } else { 289 285 } 290 286 trunk/libtinymail-camel/tny-camel-account.c
r3575 r3582 180 180 camel_exception_clear (apriv->ex); 181 181 182 if (!apriv->service || !apriv->service->url) {182 if (!apriv->service) { 183 183 url = camel_url_new (proto, apriv->ex); 184 184 urlneedfree = TRUE; … … 1995 1995 1996 1996 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 } 2000 2001 camel_object_unref (CAMEL_OBJECT (priv->service)); 2001 2002 }
