summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Sanchez Prada <msanchez@igalia.com>2011-10-28 20:30:42 +0200
committerMario Sanchez Prada <msanchez@igalia.com>2011-10-28 21:24:54 +0200
commit18d98d35c452678efc2bf09f38fb2d0594641613 (patch)
tree9be3ae9a5611bfe55da6c7cf1ec4a70a55791548
parente648f8220905b17632f7d4b2f16deac1b0aff7d0 (diff)
downloadat-spi2-atk-18d98d35c452678efc2bf09f38fb2d0594641613.tar.gz
Socket's implementation of ref_state_set to return empty sets instead of NULL
Calls to atk_object_ref_state_set() are expected to return a valid state set always, so it would be better if this implementation of socket's ref_state_set() returned empty sets instead of just NULL, to avoid calling to atk_state_set_*() functions over invalid instances of AtkStateSet (e.g. add_pending_items() in accessible-cache.c). https://bugs.freedesktop.org/show_bug.cgi?id=42350
-rw-r--r--atk-adaptor/bridge.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
index d049731..a1ee202 100644
--- a/atk-adaptor/bridge.c
+++ b/atk-adaptor/bridge.c
@@ -334,17 +334,19 @@ socket_ref_state_set (AtkObject *accessible)
DBusMessageIter iter, iter_array;
AtkStateSet *set;
+ set = atk_state_set_new ();
+
if (!socket->embedded_plug_id)
- return NULL;
+ return set;
child_name = g_strdup (socket->embedded_plug_id);
if (!child_name)
- return NULL;
+ return set;
child_path = g_utf8_strchr (child_name + 1, -1, ':');
if (!child_path)
{
g_free (child_name);
- return NULL;
+ return set;
}
*(child_path++) = '\0';
message = dbus_message_new_method_call (child_name, child_path, ATSPI_DBUS_INTERFACE_ACCESSIBLE, "GetState");
@@ -352,15 +354,13 @@ socket_ref_state_set (AtkObject *accessible)
reply = dbus_connection_send_with_reply_and_block (spi_global_app_data->bus, message, 1, NULL);
dbus_message_unref (message);
if (reply == NULL)
- return NULL;
+ return set;
if (strcmp (dbus_message_get_signature (reply), "au") != 0)
{
dbus_message_unref (reply);
- return NULL;
+ return set;
}
- set = atk_state_set_new ();
- if (!set)
- return NULL;
+
dbus_message_iter_init (reply, &iter);
dbus_message_iter_recurse (&iter, &iter_array);
do