aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-tp-roomlist.c8
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);