diff options
author | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-01-14 16:14:20 +0100 |
---|---|---|
committer | Jaikumar Ganesh <jaikumar@google.com> | 2011-03-10 16:48:12 -0800 |
commit | 26de25f98a2d31aa5da62e3a6a92718625a51551 (patch) | |
tree | 8a8bf8de0cdb4196a2d13bea8a715bfe6b201cb7 | |
parent | 9c66fc0ab526c7b51c73010661ce1d3e01200ed5 (diff) | |
download | bluez-26de25f98a2d31aa5da62e3a6a92718625a51551.tar.gz |
gdbus: invaldate_parent_data: walk the whole path down
Assume there is only one object registerd at "/". If we add a new
object at "/foo/bar" the introspection of "/" has to be updated. A new
node has to be added at "/".
invalidate_parent_data stops invaldating the whole path because the
boolean return value of dbus_connection_get_object_path_data is used
wrong.
If we get a TRUE just go on down in the path, if FALSE is return
dbus_connection_get_object_path_data has run out of memory.
-rw-r--r-- | gdbus/object.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gdbus/object.c b/gdbus/object.c index afa904eb..49006ec3 100644 --- a/gdbus/object.c +++ b/gdbus/object.c @@ -475,12 +475,13 @@ static void invalidate_parent_data(DBusConnection *conn, const char *child_path) if (!strlen(parent_path)) goto done; - if (!dbus_connection_get_object_path_data(conn, parent_path, - (void *) &data)) { - invalidate_parent_data(conn, parent_path); + if (dbus_connection_get_object_path_data(conn, parent_path, + (void *) &data) == FALSE) { goto done; } + invalidate_parent_data(conn, parent_path); + if (data == NULL) goto done; |