]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/54384 (gfortran memory leaks)
authorTobias Burnus <burnus@net-b.de>
Mon, 27 Aug 2012 20:51:52 +0000 (22:51 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Mon, 27 Aug 2012 20:51:52 +0000 (22:51 +0200)
2012-08-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/54384
        * resolve.c (gfc_resolve_character_operator): Free temporary
        variables.
        * trans-expr.c (gfc_conv_statement_function): Ditto.

From-SVN: r190731

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/fortran/trans-expr.c

index d384d388232bea44fe3cdd9eb4ecb4a7301457cf..68d1f75c03dddad8c4c44de4d78779f4f502f131 100644 (file)
@@ -1,3 +1,10 @@
+2012-08-27  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/54384
+       * resolve.c (gfc_resolve_character_operator): Free temporary
+       variables.
+       * trans-expr.c (gfc_conv_statement_function): Ditto.
+
 2012-08-27  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/54384
index 63b730c6e3b2456774c058f651031a061baca2c6..312713bcc5496ee7c00a4dfb048ab5e2e112c84b 100644 (file)
@@ -5593,7 +5593,12 @@ gfc_resolve_character_operator (gfc_expr *e)
   e->ts.u.cl = gfc_new_charlen (gfc_current_ns, NULL);
 
   if (!e1 || !e2)
-    return;
+    {
+      gfc_free_expr (e1);
+      gfc_free_expr (e2);
+      
+      return;
+    }
 
   e->ts.u.cl->length = gfc_add (e1, e2);
   e->ts.u.cl->length->ts.type = BT_INTEGER;
index 3ab7d5d5b7419db9893ff6bd0d2b724d4a10d8ee..84a4b34bbb2b304232457aef3efd48fda75cba48 100644 (file)
@@ -5080,6 +5080,7 @@ gfc_conv_statement_function (gfc_se * se, gfc_expr * expr)
   /* Restore the original variables.  */
   for (fargs = sym->formal, n = 0; fargs; fargs = fargs->next, n++)
     gfc_restore_sym (fargs->sym, &saved_vars[n]);
+  free (temp_vars);
   free (saved_vars);
 }