https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92863

--- Comment #2 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
This looks reasonable:

Index: misc.c
===================================================================
--- misc.c      (Revision 279064)
+++ misc.c      (Arbeitskopie)
@@ -164,9 +164,17 @@ gfc_typename (gfc_typespec *ts)
       sprintf (buffer, "UNION(%s)", ts->u.derived->name);
       break;
     case BT_DERIVED:
-      sprintf (buffer, "TYPE(%s)", ts->u.derived->name);
+      if (ts->u.derived)
+       sprintf (buffer, "TYPE(%s)", ts->u.derived->name);
+      else
+       sprintf (buffer, "invalid type");
       break;
     case BT_CLASS:
+      if (ts->u.derived == NULL)
+       {
+         sprintf (buffer, "invalid class");
+         break;
+       }
       ts1 = ts->u.derived->components ? &ts->u.derived->components->ts : NULL;
       if (ts1 && ts1->u.derived && ts1->u.derived->attr.unlimited_polymorphic)
        sprintf (buffer, "CLASS(*)");

Reply via email to