diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2004-12-30 16:44:51 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2004-12-30 16:44:51 +0000 |
| commit | c87166330e5cb6087e3bfd2852bcdad8385abfe3 (patch) | |
| tree | aa241ecc0bae3d43f994f4015304df3bea580d08 | |
| parent | 099f410feada24f648ab6a43d4de7208f840a223 (diff) | |
| download | lasso-c87166330e5cb6087e3bfd2852bcdad8385abfe3.tar.gz lasso-c87166330e5cb6087e3bfd2852bcdad8385abfe3.tar.xz lasso-c87166330e5cb6087e3bfd2852bcdad8385abfe3.zip | |
fixing object refcounting in login/logout and proper object destruction to
profile
| -rw-r--r-- | lasso/id-ff/identity.c | 2 | ||||
| -rw-r--r-- | lasso/id-ff/login.c | 4 | ||||
| -rw-r--r-- | lasso/id-ff/logout.c | 4 | ||||
| -rw-r--r-- | lasso/id-ff/profile.c | 10 | ||||
| -rw-r--r-- | lasso/id-ff/session.c | 2 |
5 files changed, 13 insertions, 9 deletions
diff --git a/lasso/id-ff/identity.c b/lasso/id-ff/identity.c index 98cf5eca..ce5143ca 100644 --- a/lasso/id-ff/identity.c +++ b/lasso/id-ff/identity.c @@ -103,6 +103,8 @@ lasso_identity_remove_federation(LassoIdentity *identity, const char *providerID void lasso_identity_destroy(LassoIdentity *identity) { + if (identity == NULL) + return; lasso_node_destroy(LASSO_NODE(identity)); } diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c index 27b1e72c..8c1084ff 100644 --- a/lasso/id-ff/login.c +++ b/lasso/id-ff/login.c @@ -1356,7 +1356,7 @@ lasso_login_new(LassoServer *server) g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); login = g_object_new(LASSO_TYPE_LOGIN, NULL); - LASSO_PROFILE(login)->server = server; + LASSO_PROFILE(login)->server = g_object_ref(server); return login; } @@ -1379,7 +1379,7 @@ lasso_login_new_from_dump(LassoServer *server, const gchar *dump) login = g_object_new(LASSO_TYPE_LOGIN, NULL); doc = xmlParseMemory(dump, strlen(dump)); init_from_xml(LASSO_NODE(login), xmlDocGetRootElement(doc)); - LASSO_PROFILE(login)->server = server; + LASSO_PROFILE(login)->server = g_object_ref(server); return login; } diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index ce8b89b1..1d270a63 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -969,7 +969,7 @@ lasso_logout_new(LassoServer *server) g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); logout = g_object_new(LASSO_TYPE_LOGOUT, NULL); - LASSO_PROFILE(logout)->server = server; + LASSO_PROFILE(logout)->server = g_object_ref(server); return logout; } @@ -989,7 +989,7 @@ lasso_logout_new_from_dump(LassoServer *server, const char *dump) LassoLogout *logout; xmlDoc *doc; - logout = lasso_logout_new(server); + logout = lasso_logout_new(g_object_ref(server)); doc = xmlParseMemory(dump, strlen(dump)); init_from_xml(LASSO_NODE(logout), xmlDocGetRootElement(doc)); diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c index 5a9070ae..dbaa90ed 100644 --- a/lasso/id-ff/profile.c +++ b/lasso/id-ff/profile.c @@ -362,14 +362,14 @@ dispose(GObject *object) debug("Profile object 0x%p disposed ...", profile); - /* XXX unref reference counted objects */ - /* lasso_server_destroy(profile->server); + lasso_server_destroy(profile->server); lasso_identity_destroy(profile->identity); lasso_session_destroy(profile->session); - lasso_node_destroy(profile->request); - lasso_node_destroy(profile->response); - */ + if (profile->request != NULL) + lasso_node_destroy(LASSO_NODE(profile->request)); + if (profile->response != NULL) + lasso_node_destroy(LASSO_NODE(profile->response)); G_OBJECT_CLASS(parent_class)->dispose(G_OBJECT(profile)); } diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c index 71c1d833..46e28f96 100644 --- a/lasso/id-ff/session.c +++ b/lasso/id-ff/session.c @@ -460,5 +460,7 @@ lasso_session_dump(LassoSession *session) **/ void lasso_session_destroy(LassoSession *session) { + if (session == NULL) + return; lasso_node_destroy(LASSO_NODE(session)); } |
