From 09c8a7c63c431b70e373a25e2de3bdcad3cda608 Mon Sep 17 00:00:00 2001 From: daurnimator Date: Fri, 24 Jul 2015 22:22:54 +1000 Subject: sd-bus: add 'offset' member for vtable methods Defaults to zero, which retains the current behaviour. Fixes #577 --- src/libsystemd/sd-bus/bus-objects.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/libsystemd/sd-bus/bus-objects.c') 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) -- cgit v1.2.3-54-g00ecf