summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gorse <mgorse@suse.com>2012-09-17 19:06:40 -0500
committerMike Gorse <mgorse@suse.com>2012-09-17 19:06:40 -0500
commitda10ef8b744bf7b04d18bda4cead3a9d71548a3e (patch)
tree77257124e05b8527cb6c8faf620b7e087a64a95b
parente1015608a0f79178be66220f17d1af5fab030bfa (diff)
downloadat-spi2-atk-da10ef8b744bf7b04d18bda4cead3a9d71548a3e.tar.gz
Fix an errant g_object_unref
If an object is deregistered but not in the cache, then only unref it if it was found in the queue of objects to be added (ie, it is possible that it is leased, rather than queued to be cached, in which case it should not be unrefed).
-rw-r--r--atk-adaptor/accessible-cache.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/atk-adaptor/accessible-cache.c b/atk-adaptor/accessible-cache.c
index 3a30b51..be247e4 100644
--- a/atk-adaptor/accessible-cache.c
+++ b/atk-adaptor/accessible-cache.c
@@ -179,9 +179,8 @@ remove_object (GObject * source, GObject * gobj, gpointer data)
g_signal_emit (cache, cache_signals [OBJECT_REMOVED], 0, gobj);
g_hash_table_remove (cache->objects, gobj);
}
- else
+ else if (g_queue_remove (cache->add_traversal, gobj))
{
- g_queue_remove (cache->add_traversal, gobj);
g_object_unref (gobj);
}
}