http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47189

janus at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2011.01.06 13:28:51
         AssignedTo|unassigned at gcc dot       |janus at gcc dot gnu.org
                   |gnu.org                     |
     Ever Confirmed|0                           |1

--- Comment #1 from janus at gcc dot gnu.org 2011-01-06 13:28:51 UTC ---
Patch:


Index: gcc/fortran/class.c
===================================================================
--- gcc/fortran/class.c    (revision 168525)
+++ gcc/fortran/class.c    (working copy)
@@ -83,7 +83,8 @@ gfc_add_component_ref (gfc_expr *e, const char *na


 /* Build a NULL initializer for CLASS pointers,
-   initializing the _data and _vptr components to zero.  */
+   initializing the _data component to NULL and
+   the _vptr component to the declared type.  */

 gfc_expr *
 gfc_class_null_initializer (gfc_typespec *ts)
@@ -98,9 +99,10 @@ gfc_class_null_initializer (gfc_typespec *ts)
   for (comp = ts->u.derived->components; comp; comp = comp->next)
     {
       gfc_constructor *ctor = gfc_constructor_get();
-      ctor->expr = gfc_get_expr ();
-      ctor->expr->expr_type = EXPR_NULL;
-      ctor->expr->ts = comp->ts;
+      if (strcmp (comp->name, "_vptr") == 0)
+    ctor->expr = gfc_lval_expr_from_sym (gfc_find_derived_vtab
(ts->u.derived));
+      else
+    ctor->expr = gfc_get_null_expr (NULL);
       gfc_constructor_append (&init->value.constructor, ctor);
     }

Reply via email to