From: Mikael Morin Date: Sun, 16 Sep 2012 11:26:52 +0000 (+0000) Subject: symbol.c (gfc_undo_symbols): Correctly undo namelists. X-Git-Tag: misc/gccgo-go1_1_2~838 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15319c3ed9c09f632012dee8f2719059b1e3fff2;p=thirdparty%2Fgcc.git symbol.c (gfc_undo_symbols): Correctly undo namelists. fortran/ * symbol.c (gfc_undo_symbols): Correctly undo namelists. testsuite/ * gfortran.dg/namelist_75.f90: New test. From-SVN: r191357 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6259229a25e0..f363d59a7503 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2012-09-16 Mikael Morin + + * symbol.c (gfc_undo_symbols): Correctly undo namelists. + 2012-09-15 Tobias Burnus * trans-io.c (gfc_trans_transfer): Add an assert. diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index d68208d3010e..c914e65cac20 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -2996,7 +2996,7 @@ gfc_undo_symbols (void) { if (p->namelist_tail != old->namelist_tail) { - gfc_free_namelist (old->namelist_tail); + gfc_free_namelist (old->namelist_tail->next); old->namelist_tail->next = NULL; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6ae64584dc41..b6f1990beb88 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-09-16 Mikael Morin + + * gfortran.dg/namelist_75.f90: New test. + 2012-09-15 Tom de Vries * gcc.dg/tree-ssa/vrp82.c: New test. diff --git a/gcc/testsuite/gfortran.dg/namelist_75.f90 b/gcc/testsuite/gfortran.dg/namelist_75.f90 new file mode 100644 index 000000000000..c88da65d6b2c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/namelist_75.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! +! Tests a write-after-free memory error fix in gfc_undo_symbols + +program test_nml + + namelist /foo/ bar, baz + namelist /foo/ wrong, , ! { dg-error "Syntax error in NAMELIST" } + +end program test_nml