projects
/
platform
/
upstream
/
neard.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0ac2df8
)
gdbus: Fix issue with unref of client while parsing interfaces
author
Marcel Holtmann
<marcel@holtmann.org>
Sun, 16 Dec 2012 00:06:33 +0000
(
01:06
+0100)
committer
Marcel Holtmann
<marcel@holtmann.org>
Wed, 19 Dec 2012 02:43:28 +0000
(
03:43
+0100)
gdbus/client.c
patch
|
blob
|
history
diff --git
a/gdbus/client.c
b/gdbus/client.c
index
670f6a7
..
76e4cc1
100644
(file)
--- 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);
dbus_message_iter_get_basic(&iter, &path);
dbus_message_iter_next(&iter);
+ g_dbus_client_ref(client);
+
parse_interfaces(client, path, &iter);
parse_interfaces(client, path, &iter);
+
+ g_dbus_client_unref(client);
}
static void interfaces_removed(GDBusClient *client, DBusMessage *msg)
}
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);
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;
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);
}
proxy_remove(client, path, interface);
dbus_message_iter_next(&entry);
}
+
+ g_dbus_client_unref(client);
}
static void parse_managed_objects(GDBusClient *client, DBusMessage *msg)
}
static void parse_managed_objects(GDBusClient *client, DBusMessage *msg)