From c87166330e5cb6087e3bfd2852bcdad8385abfe3 Mon Sep 17 00:00:00 2001 From: Frederic Peters Date: Thu, 30 Dec 2004 16:44:51 +0000 Subject: fixing object refcounting in login/logout and proper object destruction to profile --- lasso/id-ff/identity.c | 2 ++ lasso/id-ff/login.c | 4 ++-- lasso/id-ff/logout.c | 4 ++-- lasso/id-ff/profile.c | 10 +++++----- 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)); } -- cgit