[glib] Make g_type_interface_prerequisites() only return one instantiable type



commit 63a6666ab7a54c9584b6579e323301f3528e86b3
Author: Benjamin Otte <otte redhat com>
Date:   Wed Feb 17 08:45:28 2010 +0100

    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 files 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);
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]