From 3a02b264dcf6bd7fed12e88eecfdcf5e80615149 Mon Sep 17 00:00:00 2001 From: Mike Gorse Date: Thu, 24 Apr 2008 12:06:27 -0400 Subject: [PATCH] Fix bugs with object -> path hash --- libspi/dbus.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libspi/dbus.c b/libspi/dbus.c index 090a721..6a258e8 100644 --- a/libspi/dbus.c +++ b/libspi/dbus.c @@ -43,13 +43,15 @@ register_object (AtkObject * obj) if (!path2ptr) return ++objindex; } - while (g_hash_table_lookup (path2ptr, (gpointer)++ objindex)) + objindex++; + while (g_hash_table_lookup (path2ptr, &objindex)) { + objindex++; /* g_object_get_data returning 0 means no data, so handle wrap-around */ if (objindex == 0) objindex++; } - g_hash_table_insert (path2ptr, (gpointer) objindex, obj); + g_hash_table_insert (path2ptr, &objindex, obj); g_object_set_data_full (G_OBJECT (obj), "dbus-id", (gpointer) objindex, deregister_object); return objindex; @@ -62,6 +64,11 @@ spi_dbus_get_object (const char *path) void *data; g_assert (path); + if (strcmp(path, "/org/freedesktop/atspi/accessible", 33) != 0) return NULL; + path += 33; /* skip over preamble */ + if (path[0] == '\0') return atk_get_root(); + if (path[0] != '/') return NULL; + path++; index = atoi (path); data = g_hash_table_lookup (path2ptr, (gpointer) index); if (data) -- 2.7.4