summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSenko Rasic <senko.rasic@collabora.co.uk>2007-01-05 16:52:34 +0000
committerSenko Rasic <senko.rasic@collabora.co.uk>2007-01-05 16:52:34 +0000
commit83a2b32018ecd965f024dc6942fff8666b10ce7c (patch)
tree860bfbf7600d8c1fcae5da254ecb0ce2b166a3d7
parentf4ebefa92b8cbe519f0e500ff2d1558e0215d18d (diff)
downloadtelepathy-gabble-83a2b32018ecd965f024dc6942fff8666b10ce7c.tar.gz
GabbleConnection, GabbleVCardManager: changed disposal order, making vcard callbacks on dispose harmless
20070105165234-01440-9404f883dccb841d8f1b2ab82420c18b03e4169e.gz
-rw-r--r--src/gabble-connection.c6
-rw-r--r--src/vcard-manager.c6
2 files changed, 4 insertions, 8 deletions
diff --git a/src/gabble-connection.c b/src/gabble-connection.c
index 7d773662b..7b8cff962 100644
--- a/src/gabble-connection.c
+++ b/src/gabble-connection.c
@@ -870,6 +870,9 @@ gabble_connection_dispose (GObject *object)
priv->channel_requests = NULL;
}
+ g_object_unref (self->vcard_manager);
+ self->vcard_manager = NULL;
+
g_ptr_array_foreach (priv->channel_factories, (GFunc) g_object_unref, NULL);
g_ptr_array_free (priv->channel_factories, TRUE);
priv->channel_factories = NULL;
@@ -880,9 +883,6 @@ gabble_connection_dispose (GObject *object)
g_object_unref (self->disco);
self->disco = NULL;
- g_object_unref (self->vcard_manager);
- self->vcard_manager = NULL;
-
g_object_unref (self->presence_cache);
self->presence_cache = NULL;
diff --git a/src/vcard-manager.c b/src/vcard-manager.c
index e4d309e2b..5aee563a5 100644
--- a/src/vcard-manager.c
+++ b/src/vcard-manager.c
@@ -205,11 +205,7 @@ gabble_vcard_manager_dispose (GObject *object)
/* cancel request removes the element from the list after cancelling */
while (priv->requests)
- {
- GabbleVCardManagerRequest *request = (GabbleVCardManagerRequest *) priv->requests->data;
- request->callback = NULL;
- cancel_request (request);
- }
+ cancel_request (priv->requests->data);
if (G_OBJECT_CLASS (gabble_vcard_manager_parent_class)->dispose)
G_OBJECT_CLASS (gabble_vcard_manager_parent_class)->dispose (object);