diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2012-02-13 11:04:17 +0100 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2012-02-13 13:44:26 +0100 |
commit | f6038c7c1a4302e298fbdadc81e5e89fc844e6b2 (patch) | |
tree | 006fc134606ee73b866051a152145914ba7ef3f2 | |
parent | 10c3dda166f5dbf8f28117fbe07a4c237ac81598 (diff) |
make sure the result object stays alive while renaming groups
I started tracking this in Gabble so my unit test is living there.
https://bugs.freedesktop.org/show_bug.cgi?id=45982
-rw-r--r-- | telepathy-glib/base-contact-list.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/telepathy-glib/base-contact-list.c b/telepathy-glib/base-contact-list.c index a1b4e1f3b..613960a6b 100644 --- a/telepathy-glib/base-contact-list.c +++ b/telepathy-glib/base-contact-list.c @@ -4439,6 +4439,7 @@ emulate_rename_group_remove_cb (GObject *source, } g_simple_async_result_complete (rename_result); + g_object_unref (rename_result); } static void @@ -4455,12 +4456,15 @@ emulate_rename_group_add_cb (GObject *source, g_simple_async_result_set_from_error (rename_result, error); g_clear_error (&error); g_simple_async_result_complete (rename_result); - return; + goto out; } tp_base_contact_list_remove_group_async (self, g_simple_async_result_get_op_res_gpointer (rename_result), - emulate_rename_group_remove_cb, rename_result); + emulate_rename_group_remove_cb, g_object_ref (rename_result)); + +out: + g_object_unref (rename_result); } static void @@ -4491,7 +4495,7 @@ tp_base_contact_list_emulate_rename_group (TpBaseContactList *self, old_members = tp_base_contact_list_dup_group_members (self, old_name); tp_base_contact_list_add_to_group_async (self, new_name, old_members, - emulate_rename_group_add_cb, result); + emulate_rename_group_add_cb, g_object_ref (result)); g_object_unref (result); tp_handle_set_destroy (old_members); } |