diff options
author | Mike Gorse <mgorse@novell.com> | 2011-12-12 11:25:44 -0600 |
---|---|---|
committer | Mike Gorse <mgorse@novell.com> | 2011-12-12 11:25:44 -0600 |
commit | 03c98c4848ecc1af3f3ffd68383660a8b8191a58 (patch) | |
tree | d179ea23a09cda854e30a414d1548738c8f593ac /atk-adaptor/accessible-cache.c | |
parent | 770fcb6cf42143eebe5ebd9660a1c8737edaca6b (diff) | |
download | at-spi2-core-03c98c4848ecc1af3f3ffd68383660a8b8191a58.tar.gz |
Don't leak ref when processing a child-added signal with no object value
Diffstat (limited to 'atk-adaptor/accessible-cache.c')
-rw-r--r-- | atk-adaptor/accessible-cache.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/atk-adaptor/accessible-cache.c b/atk-adaptor/accessible-cache.c index 4d5cdb35..fa6b561e 100644 --- a/atk-adaptor/accessible-cache.c +++ b/atk-adaptor/accessible-cache.c @@ -318,7 +318,7 @@ child_added_listener (GSignalInvocationHint * signal_hint, const GValue * param_values, gpointer data) { SpiCache *cache = spi_global_cache; - + gboolean child_needs_ref = TRUE; AtkObject *accessible; AtkObject *child; @@ -351,10 +351,12 @@ child_added_listener (GSignalInvocationHint * signal_hint, child = g_value_get_pointer (param_values + 2); if (!ATK_IS_OBJECT (child)) - { - child = atk_object_ref_accessible_child (accessible, index); - } - g_object_ref (child); + { + child = atk_object_ref_accessible_child (accessible, index); + child_needs_ref = FALSE; + } + if (child_needs_ref) + g_object_ref (child); g_queue_push_tail (cache->add_traversal, child); if (cache->add_pending_idle == 0) |