Message ID | 20180524002415.GA30090@troutmask.apl.washington.edu |
---|---|
State | New |
Headers | show |
Series | PR fortan/85779 -- Fix NULL pointer dereference | expand |
2018-05-24 2:24 GMT+02:00 Steve Kargl <sgk@troutmask.apl.washington.edu>: > Subject says it all. OK to commit? Ok with me. Thanks, Janus > 2018-05-23 Steven G. Kargl <kargl@gcc.gnu.org> > > PR fortran/85779 > *decl.c (gfc_match_derived_decl): Fix NULL point dereference. > > 2018-05-23 Steven G. Kargl <kargl@gcc.gnu.org> > > PR fortran/85779 > * gfortran.dg/pr85779_1.f90: New test. > * gfortran.dg/pr85779_2.f90: Ditto. > * gfortran.dg/pr85779_3.f90: Ditto. > > -- > Steve
Hi Steve, > Am 24.05.2018 um 02:24 schrieb Steve Kargl <sgk@troutmask.apl.washington.edu>: > > Subject says it all. OK to commit? OK. Thanks for the patch! Thomas > > 2018-05-23 Steven G. Kargl <kargl@gcc.gnu.org> > > PR fortran/85779 > *decl.c (gfc_match_derived_decl): Fix NULL point dereference. > > 2018-05-23 Steven G. Kargl <kargl@gcc.gnu.org> > > PR fortran/85779 > * gfortran.dg/pr85779_1.f90: New test. > * gfortran.dg/pr85779_2.f90: Ditto. > * gfortran.dg/pr85779_3.f90: Ditto. > > -- > Steve > <pr85779.diff>
Index: gcc/fortran/decl.c =================================================================== --- gcc/fortran/decl.c (revision 260623) +++ gcc/fortran/decl.c (working copy) @@ -9960,8 +9960,12 @@ gfc_match_derived_decl (void) if (!gensym->attr.generic && gensym->ts.type != BT_UNKNOWN) { - gfc_error ("Derived type name %qs at %C already has a basic type " - "of %s", gensym->name, gfc_typename (&gensym->ts)); + if (gensym->ts.u.derived) + gfc_error ("Derived type name %qs at %C already has a basic type " + "of %s", gensym->name, gfc_typename (&gensym->ts)); + else + gfc_error ("Derived type name %qs at %C already has a basic type", + gensym->name); return MATCH_ERROR; } Index: gcc/testsuite/gfortran.dg/pr85779_1.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr85779_1.f90 (nonexistent) +++ gcc/testsuite/gfortran.dg/pr85779_1.f90 (working copy) @@ -0,0 +1,6 @@ +! { dg-do compile } +! PR fortran/85779 +type(t) function f() ! { dg-error "is not accessible" } + type f ! { dg-error "already has a basic type" } + end type ! { dg-error "END FUNCTION statement" } +end Index: gcc/testsuite/gfortran.dg/pr85779_2.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr85779_2.f90 (nonexistent) +++ gcc/testsuite/gfortran.dg/pr85779_2.f90 (working copy) @@ -0,0 +1,7 @@ +! { dg-do compile } +! PR fortran/85779 +type(t) function f() result(z) ! { dg-error "is not accessible" } + type z ! { dg-error "already has a basic type" } + end type ! { dg-error "END FUNCTION statement" } +end + Index: gcc/testsuite/gfortran.dg/pr85779_3.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr85779_3.f90 (nonexistent) +++ gcc/testsuite/gfortran.dg/pr85779_3.f90 (working copy) @@ -0,0 +1,7 @@ +! { dg-do compile } +! PR fortran/85779 +class(t) function f() ! { dg-error "must be dummy, allocatable or pointer" } + type f ! { dg-error "already has a basic type" } + end type ! { dg-error "END FUNCTION statement" } +end +