From: Mike Gorse Date: Mon, 12 Dec 2011 17:25:44 +0000 (-0600) Subject: Don't leak ref when processing a child-added signal with no object value X-Git-Tag: AT_SPI2_ATK_2_12_0~166 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git;a=commitdiff_plain;h=03c98c4848ecc1af3f3ffd68383660a8b8191a58 Don't leak ref when processing a child-added signal with no object value --- diff --git a/atk-adaptor/accessible-cache.c b/atk-adaptor/accessible-cache.c index 4d5cdb3..fa6b561 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)