From 63a6666ab7a54c9584b6579e323301f3528e86b3 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 17 Feb 2010 08:45:28 +0100 Subject: [PATCH] Make g_type_interface_prerequisites() only return one instantiable type Previously, the code had a heisenbug and could potentially return superclasses, too. In fact, it was based on the behavior of malloc. https://bugzilla.redhat.com/show_bug.cgi?id=554678 --- gobject/gtype.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gobject/gtype.c b/gobject/gtype.c index edeca10..767506f 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -1622,9 +1622,11 @@ g_type_interface_prerequisites (GType interface_type, { GType prerequisite = IFACE_NODE_PREREQUISITES (iface)[i]; TypeNode *node = lookup_type_node_I (prerequisite); - if (node->is_instantiatable && - (!inode || type_node_is_a_L (node, inode))) - inode = node; + if (node->is_instantiatable) + { + if (!inode || type_node_is_a_L (node, inode)) + inode = node; + } else types[n++] = NODE_TYPE (node); } -- 2.7.4