aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 942a9ad..465cf2b 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -2639,6 +2639,10 @@ found:
expr->ts = sym->ts;
expr->value.function.name = sym->name;
expr->value.function.esym = sym;
+ /* Prevent crash when sym->ts.u.derived->components is not set due to previous
+ error(s). */
+ if (sym->ts.type == BT_CLASS && !CLASS_DATA (sym))
+ return MATCH_ERROR;
if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->as)
expr->rank = CLASS_DATA (sym)->as->rank;
else if (sym->as != NULL)