From: Marcel Holtmann Date: Sun, 16 Dec 2012 00:06:33 +0000 (+0100) Subject: gdbus: Fix issue with unref of client while parsing interfaces X-Git-Tag: 0.9~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=def06636f7bf89c5187119d63d85e74ff2eac3e3;p=platform%2Fupstream%2Fneard.git gdbus: Fix issue with unref of client while parsing interfaces --- diff --git a/gdbus/client.c b/gdbus/client.c index 670f6a7..76e4cc1 100644 --- a/gdbus/client.c +++ b/gdbus/client.c @@ -675,7 +675,11 @@ static void interfaces_added(GDBusClient *client, DBusMessage *msg) dbus_message_iter_get_basic(&iter, &path); dbus_message_iter_next(&iter); + g_dbus_client_ref(client); + parse_interfaces(client, path, &iter); + + g_dbus_client_unref(client); } static void interfaces_removed(GDBusClient *client, DBusMessage *msg) @@ -697,6 +701,8 @@ static void interfaces_removed(GDBusClient *client, DBusMessage *msg) dbus_message_iter_recurse(&iter, &entry); + g_dbus_client_ref(client); + while (dbus_message_iter_get_arg_type(&entry) == DBUS_TYPE_STRING) { const char *interface; @@ -704,6 +710,8 @@ static void interfaces_removed(GDBusClient *client, DBusMessage *msg) proxy_remove(client, path, interface); dbus_message_iter_next(&entry); } + + g_dbus_client_unref(client); } static void parse_managed_objects(GDBusClient *client, DBusMessage *msg)