OSDN Git Service

2009-05-26 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 26 May 2009 19:23:45 +0000 (19:23 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 26 May 2009 19:23:45 +0000 (19:23 +0000)
        PR fortran/40246
        * match.c (gfc_match_nullify): NULLify freed pointer.

2009-05-26  Tobias Burnus  <burnus@net-b.de>

        PR fortran/40246
        * gfortran.dg/nullify_4.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147879 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/match.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/nullify_4.f90 [new file with mode: 0644]

index 7695b79..048d44e 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-26  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/40246
+       * match.c (gfc_match_nullify): NULLify freed pointer.
+
 2009-05-26  Ian Lance Taylor  <iant@google.com>
 
        * Make-lang.in (gfortranspec.o): Use $(COMPILER).
index ed7bf58..cf558b5 100644 (file)
@@ -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;
 }
 
index 6163fcf..f42781b 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-26  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/40246
+       * gfortran.dg/nullify_4.f90: New test.
+
 2009-05-26  Richard Guenther  <rguenther@suse.de>
 
        * 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 (file)
index 0000000..48dcf72
--- /dev/null
@@ -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