From: Jerry DeLisle Date: Tue, 29 Dec 2015 05:17:42 +0000 (+0000) Subject: re PR libfortran/68987 (double free or corruption in _gfortran_st_write_done when... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=820d395cc80cd6df592cf67bc87cfb5279354fa8;p=gcc.git re PR libfortran/68987 (double free or corruption in _gfortran_st_write_done when a write statement to an internal file uses an invalid format and the ERR= specifier appears.) 2015-12-28 Jerry DeLisle PR libfortran/68987 io/format.c (format_error): Remove unneeded memory cleanup. From-SVN: r231989 --- diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 2aca878cd77..438537c998e 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,6 +1,11 @@ +2015-12-28 Jerry DeLisle + + PR libfortran/68987 + io/format.c (format_error): Remove unneeded memory cleanup. + 2015-12-14 Jerry DeLisle - PR libfortran/pr68867 + PR libfortran/68867 * io/write.c (set_fnode_default): For kind=16, set the decimal precision depending on the platform binary precision, 106 or 113. diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c index 2068af7eb84..fc7785e1eb8 100644 --- a/libgfortran/io/format.c +++ b/libgfortran/io/format.c @@ -1180,26 +1180,6 @@ format_error (st_parameter_dt *dtp, const fnode *f, const char *message) *p++ = '^'; *p = '\0'; - /* Cleanup any left over memory allocations before calling generate - error. */ - if (is_internal_unit (dtp)) - { - if (dtp->format != NULL) - { - free (dtp->format); - dtp->format = NULL; - } - - /* Leave these alone if IOSTAT was given because execution will - return from generate error in those cases. */ - if (!(dtp->common.flags & IOPARM_HAS_IOSTAT)) - { - free (dtp->u.p.fmt); - free_format_hash_table (dtp->u.p.current_unit); - free_internal_unit (dtp); - } - } - generate_error (&dtp->common, LIBERROR_FORMAT, buffer); }