From b127ebb72cce5c710445b1c823379256921f1e45 Mon Sep 17 00:00:00 2001 From: Mike Gorse Date: Sun, 29 Jan 2012 19:03:13 -0600 Subject: [PATCH] Don't try to unref an object if atk returned NULL --- atk-adaptor/adaptors/component-adaptor.c | 3 ++- atk-adaptor/adaptors/selection-adaptor.c | 3 ++- atk-adaptor/adaptors/table-adaptor.c | 13 ++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/atk-adaptor/adaptors/component-adaptor.c b/atk-adaptor/adaptors/component-adaptor.c index f477348..d74c764 100644 --- a/atk-adaptor/adaptors/component-adaptor.c +++ b/atk-adaptor/adaptors/component-adaptor.c @@ -86,7 +86,8 @@ impl_GetAccessibleAtPoint (DBusConnection * bus, DBusMessage * message, atk_component_ref_accessible_at_point (component, x, y, (AtkCoordType) coord_type); reply = spi_object_return_reference (message, child); - g_object_unref (child); + if (child) + g_object_unref (child); return reply; } diff --git a/atk-adaptor/adaptors/selection-adaptor.c b/atk-adaptor/adaptors/selection-adaptor.c index 23b0a4f..b39b22d 100644 --- a/atk-adaptor/adaptors/selection-adaptor.c +++ b/atk-adaptor/adaptors/selection-adaptor.c @@ -69,7 +69,8 @@ impl_GetSelectedChild (DBusConnection * bus, DBusMessage * message, } atk_object = atk_selection_ref_selection (selection, selectedChildIndex); reply = spi_object_return_reference (message, atk_object); - g_object_unref (atk_object); + if (atk_object) + g_object_unref (atk_object); return reply; } diff --git a/atk-adaptor/adaptors/table-adaptor.c b/atk-adaptor/adaptors/table-adaptor.c index 26fec2b..8c334b6 100644 --- a/atk-adaptor/adaptors/table-adaptor.c +++ b/atk-adaptor/adaptors/table-adaptor.c @@ -110,7 +110,8 @@ impl_GetAccessibleAt (DBusConnection * bus, DBusMessage * message, } obj = atk_table_ref_at (table, row, column); reply = spi_object_return_reference (message, obj); - g_object_unref (obj); + if (obj) + g_object_unref (obj); return reply; } @@ -629,9 +630,8 @@ impl_GetRowColumnExtentsAtIndex (DBusConnection * bus, DBusMessage * message, dbus_bool_t is_selected; dbus_bool_t ret; DBusMessage *reply; - AtkObject *cell; - AtkRole role; + AtkRole role = ATK_ROLE_INVALID; g_return_val_if_fail (ATK_IS_TABLE (user_data), droute_not_yet_handled_error (message)); @@ -647,8 +647,11 @@ impl_GetRowColumnExtentsAtIndex (DBusConnection * bus, DBusMessage * message, col_extents = atk_table_get_column_extent_at (table, row, column); is_selected = atk_table_is_selected (table, row, column); cell = atk_table_ref_at (table, row, column); - role = atk_object_get_role (cell); - g_object_unref (cell); + if (cell) + { + role = atk_object_get_role (cell); + g_object_unref (cell); + } ret = (role == ATK_ROLE_TABLE_CELL ? TRUE : FALSE); reply = dbus_message_new_method_return (message); if (reply) -- 2.7.4