diff options
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-tp-roomlist.c | 8 |
1 files changed, 7 insertions, 1 deletions
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); |