diff options
author | Janus Weil <janus@gcc.gnu.org> | 2010-08-27 23:50:47 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2010-08-27 23:50:47 +0200 |
commit | b052cbd0cd1c191def281819a3b29ebdf1f635b4 (patch) | |
tree | 956b7fe3a5498e0dc7b66c53b343b8eee659ca6b | |
parent | 7042fe5ef83ff0585eb91144817105f26d566d4c (diff) | |
download | gcc-b052cbd0cd1c191def281819a3b29ebdf1f635b4.zip gcc-b052cbd0cd1c191def281819a3b29ebdf1f635b4.tar.gz gcc-b052cbd0cd1c191def281819a3b29ebdf1f635b4.tar.bz2 |
re PR fortran/45432 (gfortran.dg/allocate_alloc_opt_9.f90: Segfault due to invalid FREE)
2010-08-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/45432
* match.c (gfc_match_allocate): Avoid double free on error.
From-SVN: r163599
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/match.c | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b98e37c..24c3e7a 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2010-08-27 Janus Weil <janus@gcc.gnu.org> + + PR fortran/45432 + * match.c (gfc_match_allocate): Avoid double free on error. + 2010-08-27 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/32049 diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 7c0dfc7..47cd8d6 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -2955,6 +2955,7 @@ alloc_opt_list: } stat = tmp; + tmp = NULL; saw_stat = true; if (gfc_check_do_variable (stat->symtree)) @@ -2981,6 +2982,7 @@ alloc_opt_list: } errmsg = tmp; + tmp = NULL; saw_errmsg = true; if (gfc_match_char (',') == MATCH_YES) @@ -3019,6 +3021,7 @@ alloc_opt_list: } source = tmp; + tmp = NULL; saw_source = true; if (gfc_match_char (',') == MATCH_YES) @@ -3050,6 +3053,7 @@ alloc_opt_list: } mold = tmp; + tmp = NULL; saw_mold = true; mold->mold = 1; |