mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-07-28 04:43:28 +02:00
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
This commit is contained in:
@@ -1622,9 +1622,11 @@ g_type_interface_prerequisites (GType interface_type,
|
|||||||
{
|
{
|
||||||
GType prerequisite = IFACE_NODE_PREREQUISITES (iface)[i];
|
GType prerequisite = IFACE_NODE_PREREQUISITES (iface)[i];
|
||||||
TypeNode *node = lookup_type_node_I (prerequisite);
|
TypeNode *node = lookup_type_node_I (prerequisite);
|
||||||
if (node->is_instantiatable &&
|
if (node->is_instantiatable)
|
||||||
(!inode || type_node_is_a_L (node, inode)))
|
{
|
||||||
|
if (!inode || type_node_is_a_L (node, inode))
|
||||||
inode = node;
|
inode = node;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
types[n++] = NODE_TYPE (node);
|
types[n++] = NODE_TYPE (node);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user