Attached patch eliminate this problem by reverting a portion of the previous patch to pr65089.
Regression tested on x86_64-Linux. I will add test case from the PR. OK for trunk and then back port to 5x? Regards, Jerry 2015-12-26 Jerry DeLisle <jvdeli...@gcc.gnu.org> PR libfortran/68987 io/format.c (format_error): Remove unneeded memory cleanup.
diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c index 2068af7e..fc7785e1 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); }