This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Patch, libgfortran] PR68987 [5/6 Regression] double free or corruption in _gfortran_st_write_done
- From: Jerry DeLisle <jvdelisle at charter dot net>
- To: gfortran <fortran at gcc dot gnu dot org>
- Cc: gcc patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 26 Dec 2015 13:56:09 -0800
- Subject: [Patch, libgfortran] PR68987 [5/6 Regression] double free or corruption in _gfortran_st_write_done
- Authentication-results: sourceware.org; auth=none
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 <jvdelisle@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);
}