diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-09-16 10:26:42 +0200 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-09-16 10:26:55 +0200 |
commit | e3ac85477f053b98531e1b295c498b41659ab0eb (patch) | |
tree | 433401ca0745e69bc58e31506ebf3da4b19b1a32 /libempathy | |
parent | 708aa24958f0e211f8582e3662b149f4ddb1305b (diff) | |
download | empathy-e3ac85477f053b98531e1b295c498b41659ab0eb.tar.gz |
tp-roomlist: ensure that we stay alive during the create_and_handle_channel async call
https://bugzilla.gnome.org/show_bug.cgi?id=658909
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); |