diff options
author | Steve Kargl <kargl@gcc.gnu.org> | 2022-12-26 14:07:04 -0800 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2022-12-29 19:25:17 -0800 |
commit | cdc6bf44eec295805ae29a8aaddafd111de01c8e (patch) | |
tree | e3a00ce5b53e7370e25cd9ee0af8618c46ffd756 /gcc/fortran/decl.cc | |
parent | bbab9c83f27cf15b861b34f2900e570c065dfc07 (diff) | |
download | gcc-cdc6bf44eec295805ae29a8aaddafd111de01c8e.zip gcc-cdc6bf44eec295805ae29a8aaddafd111de01c8e.tar.gz gcc-cdc6bf44eec295805ae29a8aaddafd111de01c8e.tar.bz2 |
Modify checks to avoid referencing NULL pointer.
Update test cases with error messages that changed as a result.
gcc/fortran/ChangeLog:
PR fortran/102595
* decl.cc (attr_decl1): Guard against NULL pointer.
* parse.cc (match_deferred_characteristics): Include BT_CLASS in check for
derived being undefined.
gcc/testsuite/ChangeLog:
PR fortran/102595
* gfortran.dg/class_result_4.f90: Update error message check.
* gfortran.dg/pr85779_3.f90: Update error message check.
Diffstat (limited to 'gcc/fortran/decl.cc')
-rw-r--r-- | gcc/fortran/decl.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc index e593518..bac7b65 100644 --- a/gcc/fortran/decl.cc +++ b/gcc/fortran/decl.cc @@ -8743,7 +8743,9 @@ attr_decl1 (void) /* Update symbol table. DIMENSION attribute is set in gfc_set_array_spec(). For CLASS variables, this must be applied to the first component, or '_data' field. */ - if (sym->ts.type == BT_CLASS && sym->ts.u.derived->attr.is_class) + if (sym->ts.type == BT_CLASS + && sym->ts.u.derived + && sym->ts.u.derived->attr.is_class) { /* gfc_set_array_spec sets sym->attr not CLASS_DATA(sym)->attr. Check for duplicate attribute here. */ |