Commit 3c2ce893 by Jerry DeLisle

re PR fortran/85840 (Memory leak in write.c)

2018-05-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/85840
	* io/write.c (write_float_0): Use separate local variable for
	the float string length.

From-SVN: r260793
parent cf3a2c1a
...@@ -1566,19 +1566,19 @@ write_float_0 (st_parameter_dt *dtp, const fnode *f, const char *source, int kin ...@@ -1566,19 +1566,19 @@ write_float_0 (st_parameter_dt *dtp, const fnode *f, const char *source, int kin
char buf_stack[BUF_STACK_SZ]; char buf_stack[BUF_STACK_SZ];
char str_buf[BUF_STACK_SZ]; char str_buf[BUF_STACK_SZ];
char *buffer, *result; char *buffer, *result;
size_t buf_size, res_len; size_t buf_size, res_len, flt_str_len;
/* Precision for snprintf call. */ /* Precision for snprintf call. */
int precision = get_precision (dtp, f, source, kind); int precision = get_precision (dtp, f, source, kind);
/* String buffer to hold final result. */ /* String buffer to hold final result. */
result = select_string (dtp, f, str_buf, &res_len, kind); result = select_string (dtp, f, str_buf, &res_len, kind);
buffer = select_buffer (dtp, f, precision, buf_stack, &buf_size, kind); buffer = select_buffer (dtp, f, precision, buf_stack, &buf_size, kind);
get_float_string (dtp, f, source , kind, 0, buffer, get_float_string (dtp, f, source , kind, 0, buffer,
precision, buf_size, result, &res_len); precision, buf_size, result, &flt_str_len);
write_float_string (dtp, result, res_len); write_float_string (dtp, result, flt_str_len);
if (buf_size > BUF_STACK_SZ) if (buf_size > BUF_STACK_SZ)
free (buffer); free (buffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment