From e3ac85477f053b98531e1b295c498b41659ab0eb Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Fri, 16 Sep 2011 10:26:42 +0200 Subject: tp-roomlist: ensure that we stay alive during the create_and_handle_channel async call https://bugzilla.gnome.org/show_bug.cgi?id=658909 --- libempathy/empathy-tp-roomlist.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libempathy') diff --git a/libempathy/empathy-tp-roomlist.c b/libempathy/empathy-tp-roomlist.c index d66bfc0f1..79516a5f0 100644 --- a/libempathy/empathy-tp-roomlist.c +++ b/libempathy/empathy-tp-roomlist.c @@ -275,7 +275,7 @@ tp_roomlist_create_channel_cb (GObject *source, if (priv->channel == NULL) { DEBUG ("Error creating channel: %s", error->message); g_error_free (error); - return; + goto out; } g_signal_connect (priv->channel, "invalidated", @@ -302,6 +302,9 @@ tp_roomlist_create_channel_cb (GObject *source, call_list_rooms_cb, self, NULL, NULL); priv->start_requested = FALSE; } + +out: + g_object_unref (self); } static void @@ -348,6 +351,9 @@ tp_roomlist_constructed (GObject *list) req = tp_account_channel_request_new (priv->account, request, TP_USER_ACTION_TIME_CURRENT_TIME); + /* Ensure we stay alive during the async call */ + g_object_ref (list); + tp_account_channel_request_create_and_handle_channel_async (req, NULL, tp_roomlist_create_channel_cb, list); -- cgit v1.2.3