Only access node->data->instance when the node is instantiable.
authorSoeren Sandmann <sandmann@daimi.au.dk>
Tue, 8 Jul 2003 20:12:05 +0000 (20:12 +0000)
committerSøren Sandmann Pedersen <ssp@src.gnome.org>
Tue, 8 Jul 2003 20:12:05 +0000 (20:12 +0000)
Tue Jul  8 22:29:31 2003  Soeren Sandmann  <sandmann@daimi.au.dk>

* gtype.c (type_class_init_Wm): Only access node->data->instance
when the node is instantiable.

gobject/ChangeLog
gobject/gtype.c

index a7fb859..c143adb 100644 (file)
@@ -1,3 +1,8 @@
+Tue Jul  8 22:29:31 2003  Soeren Sandmann  <sandmann@daimi.au.dk>
+
+       * gtype.c (type_class_init_Wm): Only access node->data->instance
+       when the node is instantiable.
+
 Tue Jul  8 14:55:27 2003  Owen Taylor  <otaylor@redhat.com>
 
        * gtype.c (type_class_init_Wm): Initialize
index 320897c..891053b 100644 (file)
@@ -912,7 +912,7 @@ type_data_make_W (TypeNode              *node,
        vtable_size += strlen (value_table->lcopy_format);
       vtable_size += 2;
     }
-  
+   
   if (node->is_instantiatable) /* carefull, is_instantiatable is also is_classed */
     {
       data = g_malloc0 (sizeof (InstanceData) + vtable_size);
@@ -1585,11 +1585,15 @@ type_class_init_Wm (TypeNode   *node,
       TypeNode *pnode = lookup_type_node_I (pclass->g_type);
       
       memcpy (class, pclass, pnode->data->class.class_size);
-      /* We need to initialize the private_size here rather than in
-       * type_data_make_W() since the class init for the parent
-       * class may have changed pnode->data->instance.private_size.
-       */
-      node->data->instance.private_size = pnode->data->instance.private_size;
+
+      if (node->is_instantiatable)
+       {
+         /* We need to initialize the private_size here rather than in
+          * type_data_make_W() since the class init for the parent
+          * class may have changed pnode->data->instance.private_size.
+          */
+         node->data->instance.private_size = pnode->data->instance.private_size;
+       }
     }
   class->g_type = NODE_TYPE (node);