diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2018-09-21 17:26:23 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2018-09-21 17:26:23 +0000 |
commit | fd876246ee8a5aabb710673f7a8bc49b7c15fe84 (patch) | |
tree | d39b0852443d85292d6513518286b03d2d484a1a /gcc/fortran | |
parent | d4accef391a4aa4c10daeef79c7103fae96a97ba (diff) | |
download | gcc-fd876246ee8a5aabb710673f7a8bc49b7c15fe84.zip gcc-fd876246ee8a5aabb710673f7a8bc49b7c15fe84.tar.gz gcc-fd876246ee8a5aabb710673f7a8bc49b7c15fe84.tar.bz2 |
re PR fortran/87359 (pointer being freed was not allocated)
2018-09-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87359
* trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc
components if must_finalize is set for expr3.
2018-09-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87359
* gfortran.dg/finalize_33.f90 : New test.
From-SVN: r264485
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-stmt.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1f62249..0d8797e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-09-21 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/87359 + * trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc + components if must_finalize is set for expr3. + 2018-09-21 Andrew Stubbs <ams@codesourcery.com> Kwok Cheung Yeung <kcy@codesourcery.com> diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 92d9c376..833c6c5 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -5998,7 +5998,8 @@ gfc_trans_allocate (gfc_code * code) if ((code->expr3->ts.type == BT_DERIVED || code->expr3->ts.type == BT_CLASS) && (code->expr3->expr_type != EXPR_VARIABLE || temp_obj_created) - && code->expr3->ts.u.derived->attr.alloc_comp) + && code->expr3->ts.u.derived->attr.alloc_comp + && !code->expr3->must_finalize) { tmp = gfc_deallocate_alloc_comp (code->expr3->ts.u.derived, expr3, code->expr3->rank); |