re PR fortran/85840 (Memory leak in write.c)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Sat, 26 May 2018 17:30:52 +0000 (17:30 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sat, 26 May 2018 17:30:52 +0000 (17:30 +0000)
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

libgfortran/io/write.c

index 50ea13364e385f39a7615c71ca507fb4258596df..21a265c8f6be74c9837d7c8ba46860df14f20ee9 100644 (file)
@@ -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 str_buf[BUF_STACK_SZ];
   char *buffer, *result;
-  size_t buf_size, res_len;
+  size_t buf_size, res_len, flt_str_len;
 
   /* Precision for snprintf call.  */
   int precision = get_precision (dtp, f, source, kind);
 
   /* String buffer to hold final result.  */
   result = select_string (dtp, f, str_buf, &res_len, kind);
-  
+
   buffer = select_buffer (dtp, f, precision, buf_stack, &buf_size, kind);
-  
+
   get_float_string (dtp, f, source , kind, 0, buffer,
-                           precision, buf_size, result, &res_len);
-  write_float_string (dtp, result, res_len);
+                           precision, buf_size, result, &flt_str_len);
+  write_float_string (dtp, result, flt_str_len);
 
   if (buf_size > BUF_STACK_SZ)
     free (buffer);