fetch the nth iface entry of the type node in the nth loop iteration, not
authorTim Janik <timj@gtk.org>
Sat, 10 Jun 2000 06:41:55 +0000 (06:41 +0000)
committerTim Janik <timj@src.gnome.org>
Sat, 10 Jun 2000 06:41:55 +0000 (06:41 +0000)
Sat Jun 10 08:38:27 2000  Tim Janik  <timj@gtk.org>

        * gtype.c (type_class_init): fetch the nth iface entry of the
        type node in the nth loop iteration, not alwys the first.
        bug discovered by Walt Pohl <cher@suitware.com>.
        (type_data_finalize_class_ifaces): same here, cut and paste
        rulez.

gobject/ChangeLog
gobject/gtype.c

index e2ab9c5f73f3d6c0cb0244afa72fea9bc1dd4e8a..2c6c318404f28c94182a8e05d1b209c29e5e42c6 100644 (file)
@@ -1,3 +1,11 @@
+Sat Jun 10 08:38:27 2000  Tim Janik  <timj@gtk.org>
+
+       * gtype.c (type_class_init): fetch the nth iface entry of the
+       type node in the nth loop iteration, not alwys the first.
+       bug discovered by Walt Pohl <cher@suitware.com>.
+       (type_data_finalize_class_ifaces): same here, cut and paste
+       rulez.
+
 Wed Jun  7 09:21:05 2000  Owen Taylor  <otaylor@redhat.com>
 
        * Makefile.am (INCLUDES): Add top_builddir so glibconfig.h
index 1b6a313d18088e7e8c3f6d2c066d02a41ab9a682..b00e58b41dd1ae10887d0be1bb695f3ab18757b7 100644 (file)
@@ -1014,14 +1014,14 @@ type_class_init (TypeNode   *node,
   /* ok, we got the class done, now initialize all interfaces */
   for (entry = NULL, i = 0; i < node->n_ifaces; i++)
     if (!node->private.iface_entries[i].vtable)
-      entry = node->private.iface_entries;
+      entry = node->private.iface_entries + i;
   while (entry)
     {
       type_iface_vtable_init (LOOKUP_TYPE_NODE (entry->iface_type), node);
-
+      
       for (entry = NULL, i = 0; i < node->n_ifaces; i++)
        if (!node->private.iface_entries[i].vtable)
-         entry = node->private.iface_entries;
+         entry = node->private.iface_entries + i;
     }
 }
 
@@ -1036,19 +1036,19 @@ type_data_finalize_class_ifaces (TypeNode *node)
   g_message ("finalizing interfaces for %sClass `%s'",
             type_descriptive_name (G_TYPE_FUNDAMENTAL (NODE_TYPE (node))),
             type_descriptive_name (NODE_TYPE (node)));
-
+  
   for (entry = NULL, i = 0; i < node->n_ifaces; i++)
     if (node->private.iface_entries[i].vtable &&
        node->private.iface_entries[i].vtable->g_instance_type == NODE_TYPE (node))
-      entry = node->private.iface_entries;
+      entry = node->private.iface_entries + i;
   while (entry)
     {
       type_iface_vtable_finalize (LOOKUP_TYPE_NODE (entry->iface_type), node, entry->vtable);
-
-  for (entry = NULL, i = 0; i < node->n_ifaces; i++)
-    if (node->private.iface_entries[i].vtable &&
-       node->private.iface_entries[i].vtable->g_instance_type == NODE_TYPE (node))
-      entry = node->private.iface_entries;
+      
+      for (entry = NULL, i = 0; i < node->n_ifaces; i++)
+       if (node->private.iface_entries[i].vtable &&
+           node->private.iface_entries[i].vtable->g_instance_type == NODE_TYPE (node))
+         entry = node->private.iface_entries + i;
     }
 }