From: Tobias Burnus Date: Tue, 26 May 2009 19:23:45 +0000 (+0200) Subject: re PR fortran/40246 (ICE on invalid SOURCE= using NULLIFY) X-Git-Tag: releases/gcc-4.5.0~5542 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=9a0bab0be682be2aaee5f1146518c4d94d44ac8e;p=gcc.git re PR fortran/40246 (ICE on invalid SOURCE= using NULLIFY) 2009-05-26 Tobias Burnus PR fortran/40246 * match.c (gfc_match_nullify): NULLify freed pointer. 2009-05-26 Tobias Burnus PR fortran/40246 * gfortran.dg/nullify_4.f90: New test. From-SVN: r147879 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7695b79501d7..048d44e191a9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2009-05-26 Tobias Burnus + + PR fortran/40246 + * match.c (gfc_match_nullify): NULLify freed pointer. + 2009-05-26 Ian Lance Taylor * Make-lang.in (gfortranspec.o): Use $(COMPILER). diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index ed7bf58bb861..cf558b54e1b9 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -2418,6 +2418,11 @@ syntax: cleanup: gfc_free_statements (new_st.next); + new_st.next = NULL; + gfc_free_expr (new_st.expr1); + new_st.expr1 = NULL; + gfc_free_expr (new_st.expr2); + new_st.expr2 = NULL; return MATCH_ERROR; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6163fcf04fa1..f42781b6ddfe 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-05-26 Tobias Burnus + + PR fortran/40246 + * gfortran.dg/nullify_4.f90: New test. + 2009-05-26 Richard Guenther * gcc.dg/tree-ssa/inline-3.c: Remove dump file. diff --git a/gcc/testsuite/gfortran.dg/nullify_4.f90 b/gcc/testsuite/gfortran.dg/nullify_4.f90 new file mode 100644 index 000000000000..48dcf72ca9d2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/nullify_4.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR fortran/40246 +! +! Check error recovery; was crashing before. +! +real, pointer :: ptr +nullify(ptr, mesh%coarser) ! { dg-error "Syntax error in NULLIFY statement" } +end