2012-05-22 14:58:18

by Mikel Astiz

[permalink] [raw]
Subject: [PATCH BlueZ v1] gdbus: Fix incorrectly discarded signals

From: Mikel Astiz <[email protected]>

Signals with no arguments were incorrectly filtered out due to the NULL
inequality check.
---
gdbus/object.c | 10 +++-------
1 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/gdbus/object.c b/gdbus/object.c
index 2dd7c0e..900e7ab 100644
--- a/gdbus/object.c
+++ b/gdbus/object.c
@@ -612,16 +612,12 @@ static gboolean check_signal(DBusConnection *conn, const char *path,
for (signal = iface->signals; signal && signal->name; signal++) {
if (!strcmp(signal->name, name)) {
*args = signal->args;
- break;
+ return TRUE;
}
}

- if (*args == NULL) {
- error("No signal named %s on interface %s", name, interface);
- return FALSE;
- }
-
- return TRUE;
+ error("No signal named %s on interface %s", name, interface);
+ return FALSE;
}

static dbus_bool_t emit_signal_valist(DBusConnection *conn,
--
1.7.7.6



2012-05-22 15:07:09

by Lucas De Marchi

[permalink] [raw]
Subject: Re: [PATCH BlueZ v1] gdbus: Fix incorrectly discarded signals

On Tue, May 22, 2012 at 11:58 AM, Mikel Astiz <[email protected]> wrote:
> From: Mikel Astiz <[email protected]>
>
> Signals with no arguments were incorrectly filtered out due to the NULL
> inequality check.
> ---
> ?gdbus/object.c | ? 10 +++-------
> ?1 files changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/gdbus/object.c b/gdbus/object.c
> index 2dd7c0e..900e7ab 100644
> --- a/gdbus/object.c
> +++ b/gdbus/object.c
> @@ -612,16 +612,12 @@ static gboolean check_signal(DBusConnection *conn, const char *path,
> ? ? ? ?for (signal = iface->signals; signal && signal->name; signal++) {
> ? ? ? ? ? ? ? ?if (!strcmp(signal->name, name)) {
> ? ? ? ? ? ? ? ? ? ? ? ?*args = signal->args;
> - ? ? ? ? ? ? ? ? ? ? ? break;
> + ? ? ? ? ? ? ? ? ? ? ? return TRUE;
> ? ? ? ? ? ? ? ?}
> ? ? ? ?}
>
> - ? ? ? if (*args == NULL) {
> - ? ? ? ? ? ? ? error("No signal named %s on interface %s", name, interface);
> - ? ? ? ? ? ? ? return FALSE;
> - ? ? ? }
> -
> - ? ? ? return TRUE;
> + ? ? ? error("No signal named %s on interface %s", name, interface);
> + ? ? ? return FALSE;
> ?}

Ack.

Lucas De Marchi