{
AtspiAccessible *accessible = ATSPI_ACCESSIBLE (object);
- g_free (accessible->description);
- g_free (accessible->name);
+ g_free (accessible->description);
+ g_free (accessible->name);
+
if (accessible->attributes)
g_hash_table_unref (accessible->attributes);
- if (accessible->priv->cache)
- g_hash_table_destroy (accessible->priv->cache);
+ if (accessible->priv->cache)
+ g_hash_table_destroy (accessible->priv->cache);
#ifdef DEBUG_REF_COUNTS
accessible_count--;
{
g_return_val_if_fail (obj != NULL, NULL);
- if (obj->parent.app &&
- !_atspi_accessible_test_cache (obj, ATSPI_CACHE_PARENT))
+ if (!_atspi_accessible_test_cache (obj, ATSPI_CACHE_PARENT))
{
DBusMessage *message, *reply;
DBusMessageIter iter, iter_variant;
+ if (!obj->parent.app)
+ return NULL;
message = dbus_message_new_method_call (obj->parent.app->bus_name,
obj->parent.path,
DBUS_INTERFACE_PROPERTIES, "Get");
if (!obj->accessible_parent)
return -1;
+ if (!_atspi_accessible_test_cache (obj->accessible_parent, ATSPI_CACHE_CHILDREN) || !obj->accessible_parent->children)
+ goto dbus;
+
for (i = 0; i < obj->accessible_parent->children->len; i++)
if (g_ptr_array_index (obj->accessible_parent->children, i) == obj)
return i;
}
+dbus:
_atspi_dbus_call (obj, atspi_interface_accessible,
"GetIndexInParent", NULL, "=>i", &ret);
return ret;
if (obj)
{
obj->cached_properties = ATSPI_CACHE_NONE;
- for (i = 0; i < obj->children->len; i++)
- atspi_accessible_clear_cache (g_ptr_array_index (obj->children, i));
+ if (obj->children)
+ for (i = 0; i < obj->children->len; i++)
+ atspi_accessible_clear_cache (g_ptr_array_index (obj->children, i));
}
}