summaryrefslogtreecommitdiff
path: root/src/libsystemd/sd-bus/bus-objects.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-07-24 14:53:21 +0200
committerLennart Poettering <lennart@poettering.net>2015-07-24 14:53:21 +0200
commita60d8280521131e0b80a32eac4ad46403c6ef8c3 (patch)
tree1a7838c82ac68655f52a1ad1cce6a7d40647adb6 /src/libsystemd/sd-bus/bus-objects.c
parent6cb22db3307d09803cd946763d9fbd60ea5b6664 (diff)
parent09c8a7c63c431b70e373a25e2de3bdcad3cda608 (diff)
Merge pull request #712 from daurnimator/577-sd_bus-vtable-methods-do-not-have-offset
sd-bus: Add offset member for vtable methods
Diffstat (limited to 'src/libsystemd/sd-bus/bus-objects.c')
-rw-r--r--src/libsystemd/sd-bus/bus-objects.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
index cbdf6552f9..a973bca84c 100644
--- a/src/libsystemd/sd-bus/bus-objects.c
+++ b/src/libsystemd/sd-bus/bus-objects.c
@@ -68,6 +68,12 @@ static int node_vtable_get_userdata(
return 1;
}
+static void *vtable_method_convert_userdata(const sd_bus_vtable *p, void *u) {
+ assert(p);
+
+ return (uint8_t*) u + p->x.method.offset;
+}
+
static void *vtable_property_convert_userdata(const sd_bus_vtable *p, void *u) {
assert(p);
@@ -360,6 +366,8 @@ static int method_callbacks_run(
if (bus->nodes_modified)
return 0;
+ u = vtable_method_convert_userdata(c->vtable, u);
+
*found_object = true;
if (c->last_iteration == bus->iteration_counter)