gdbus: Fix issue with unref of client while parsing interfaces

This commit is contained in:
Marcel Holtmann 2012-12-16 01:06:33 +01:00
parent c3d3a3a661
commit 4a0cab2f85
1 changed files with 8 additions and 0 deletions

View File

@ -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)