aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-session.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2004-01-29 16:24:16 +0800
committerMichael Zucci <zucchi@src.gnome.org>2004-01-29 16:24:16 +0800
commita96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4 (patch)
treee66755a8e11a5f6612fe0d4dabe5b7675731f9da /camel/camel-session.c
parentaadeb422d2dca792606159a24de45ce074170e0d (diff)
downloadgsoc2013-evolution-a96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4.tar
gsoc2013-evolution-a96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4.tar.gz
gsoc2013-evolution-a96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4.tar.bz2
gsoc2013-evolution-a96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4.tar.lz
gsoc2013-evolution-a96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4.tar.xz
gsoc2013-evolution-a96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4.tar.zst
gsoc2013-evolution-a96a5b74204b32b147e2cfacfec6c9d9e9ee2bf4.zip
added a doc comment.
2004-01-29 Not Zed <NotZed@Ximian.com> * camel-object.c (camel_object_bag_rekey): added a doc comment. ** See bug #53520. * camel-session.c (get_service): free the url once done, it now gets copied by the service. * camel-service.c (construct): copy the url that comes in, don't just '0Wn34z' it. clena up exception handling too. svn path=/trunk/; revision=24513
Diffstat (limited to 'camel/camel-session.c')
-rw-r--r--camel/camel-session.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/camel/camel-session.c b/camel/camel-session.c
index 0e5efa1d9c..8b2268908e 100644
--- a/camel/camel-session.c
+++ b/camel/camel-session.c
@@ -416,22 +416,21 @@ get_service (CamelSession *session, const char *url_string,
/* Now look up the service in the provider's cache */
service = camel_object_bag_reserve(provider->service_cache[type], url);
- if (service != NULL) {
- camel_url_free (url);
- return service;
- }
-
- service = (CamelService *)camel_object_new (provider->object_types[type]);
- camel_exception_init (&internal_ex);
- camel_service_construct (service, session, provider, url, &internal_ex);
- if (camel_exception_is_set (&internal_ex)) {
- camel_exception_xfer (ex, &internal_ex);
- camel_object_unref (service);
- service = NULL;
- camel_object_bag_abort(provider->service_cache[type], url);
- } else {
- camel_object_bag_add(provider->service_cache[type], url, service);
+ if (service == NULL) {
+ service = (CamelService *)camel_object_new (provider->object_types[type]);
+ camel_exception_init (&internal_ex);
+ camel_service_construct (service, session, provider, url, &internal_ex);
+ if (camel_exception_is_set (&internal_ex)) {
+ camel_exception_xfer (ex, &internal_ex);
+ camel_object_unref (service);
+ service = NULL;
+ camel_object_bag_abort(provider->service_cache[type], url);
+ } else {
+ camel_object_bag_add(provider->service_cache[type], url, service);
+ }
}
+done:
+ camel_url_free (url);
return service;
}