gdbus: Always unreference the message in g_dbus_send_message()
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Fri, 8 Feb 2013 13:58:10 +0000 (15:58 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 23 Feb 2013 10:50:02 +0000 (11:50 +0100)
A quick fix on g_dbus_send_message(), if check_signal() fails it returns
FALSE without unreferencing the message as it should. This patch fixes
it.

gdbus/object.c

index 43fb1f0..2f8ef45 100644 (file)
@@ -1496,7 +1496,7 @@ DBusMessage *g_dbus_create_reply(DBusMessage *message, int type, ...)
 
 gboolean g_dbus_send_message(DBusConnection *connection, DBusMessage *message)
 {
-       dbus_bool_t result;
+       dbus_bool_t result = FALSE;
 
        if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_METHOD_CALL)
                dbus_message_set_no_reply(message, TRUE);
@@ -1507,11 +1507,12 @@ gboolean g_dbus_send_message(DBusConnection *connection, DBusMessage *message)
                const GDBusArgInfo *args;
 
                if (!check_signal(connection, path, interface, name, &args))
-                       return FALSE;
+                       goto out;
        }
 
        result = dbus_connection_send(connection, message, NULL);
 
+out:
        dbus_message_unref(message);
 
        return result;