summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-ff/identity.c2
-rw-r--r--lasso/id-ff/login.c4
-rw-r--r--lasso/id-ff/logout.c4
-rw-r--r--lasso/id-ff/profile.c10
-rw-r--r--lasso/id-ff/session.c2
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));
}