From 622f01012030fcba31ee2a68920873ac06bb62e4 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Fri, 13 Mar 2009 09:22:57 +0000 Subject: [PATCH] when defaulting to the only item in the array, check if this is indeed the 2009-03-13 Kristian Rietveld * gsignal.c (signal_lookup_closure): when defaulting to the only item in the array, check if this is indeed the default closure. (patch by Tim Janik). svn path=/trunk/; revision=7979 --- gobject/ChangeLog | 6 ++++++ gobject/gsignal.c | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gobject/ChangeLog b/gobject/ChangeLog index 9134e65f..039211f4 100644 --- a/gobject/ChangeLog +++ b/gobject/ChangeLog @@ -1,3 +1,9 @@ +2009-03-13 Kristian Rietveld + + * gsignal.c (signal_lookup_closure): when defaulting to the only + item in the array, check if this is indeed the default closure. + (patch by Tim Janik). + 2009-03-13 Matthias Clasen * === Released 2.20.0 === diff --git a/gobject/gsignal.c b/gobject/gsignal.c index 9908e16a..d69b880c 100644 --- a/gobject/gsignal.c +++ b/gobject/gsignal.c @@ -1448,9 +1448,12 @@ signal_lookup_closure (SignalNode *node, ClassClosure *cc; if (node->class_closure_bsa && g_bsearch_array_get_n_nodes (node->class_closure_bsa) == 1) - cc = g_bsearch_array_get_nth (node->class_closure_bsa, &g_class_closure_bconfig, 0); - else - cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance)); + { + cc = g_bsearch_array_get_nth (node->class_closure_bsa, &g_class_closure_bconfig, 0); + if (cc && cc->instance_type == 0) /* check for default closure */ + return cc->closure; + } + cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance)); return cc ? cc->closure : NULL; } -- 2.34.1