X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fsd-bus.c;h=11194af007609651fa0ffac1ba5614cd1051f305;hb=62b5c2aec12e6a3d305445ee1a88bc18ca0a1548;hp=342af4d1d5c4c7a385364121a5176ac17e6eb35f;hpb=5d12cc3e286c8515f18c8417d67e26e4e2b2e7cb;p=elogind.git diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 342af4d1d..11194af00 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -3398,7 +3398,6 @@ int sd_bus_emit_signal( const char *types, ...) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL; - va_list ap; int r; if (!bus) @@ -3412,11 +3411,15 @@ int sd_bus_emit_signal( if (r < 0) return r; - va_start(ap, types); - r = bus_message_append_ap(m, types, ap); - va_end(ap); - if (r < 0) - return r; + if (!isempty(types)) { + va_list ap; + + va_start(ap, types); + r = bus_message_append_ap(m, types, ap); + va_end(ap); + if (r < 0) + return r; + } return sd_bus_send(bus, m, NULL); } @@ -3432,7 +3435,6 @@ int sd_bus_call_method( const char *types, ...) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL; - va_list ap; int r; if (!bus) @@ -3447,11 +3449,15 @@ int sd_bus_call_method( if (r < 0) return r; - va_start(ap, types); - r = bus_message_append_ap(m, types, ap); - va_end(ap); - if (r < 0) - return r; + if (!isempty(types)) { + va_list ap; + + va_start(ap, types); + r = bus_message_append_ap(m, types, ap); + va_end(ap); + if (r < 0) + return r; + } return sd_bus_send_with_reply_and_block(bus, m, 0, error, reply); } @@ -3462,7 +3468,6 @@ int sd_bus_reply_method_return( const char *types, ...) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL; - va_list ap; int r; if (!bus) @@ -3485,11 +3490,15 @@ int sd_bus_reply_method_return( if (r < 0) return r; - va_start(ap, types); - r = bus_message_append_ap(m, types, ap); - va_end(ap); - if (r < 0) - return r; + if (!isempty(types)) { + va_list ap; + + va_start(ap, types); + r = bus_message_append_ap(m, types, ap); + va_end(ap); + if (r < 0) + return r; + } return sd_bus_send(bus, m, NULL); } @@ -3985,18 +3994,16 @@ static int emit_properties_changed_on_interface( if (streq(c->interface, interface)) break; - - r = node_vtable_get_userdata(bus, path, c, &u); - if (r < 0) - return r; - if (r > 0) - break; } if (!c) return 0; - r = sd_bus_message_new_signal(bus, path, "org.freedesktop.DBus", "PropertiesChanged", &m); + r = node_vtable_get_userdata(bus, path, c, &u); + if (r <= 0) + return r; + + r = sd_bus_message_new_signal(bus, path, "org.freedesktop.DBus.Properties", "PropertiesChanged", &m); if (r < 0) return r; @@ -4033,7 +4040,7 @@ static int emit_properties_changed_on_interface( if (r < 0) return r; - r = sd_bus_message_append(m, "s", *n); + r = sd_bus_message_append(m, "s", *property); if (r < 0) return r;