]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
trans-array.c (gfc_array_allocate): Correct memory-leak patch.
authorTobias Burnus <burnus@net-b.de>
Mon, 22 Jul 2013 13:33:34 +0000 (15:33 +0200)
committerTobias Burnus <burnus@gcc.gnu.org>
Mon, 22 Jul 2013 13:33:34 +0000 (15:33 +0200)
2013-07-22  Tobias Burnus  <burnus@net-b.de>

        * trans-array.c (gfc_array_allocate): Correct memory-leak patch.

From-SVN: r201129

gcc/fortran/ChangeLog
gcc/fortran/trans-array.c

index b75ffc249c554719eb13a33d8c321236a0d78fe9..412e963206f1cabc024aa8f2acd572441ca3483a 100644 (file)
@@ -1,3 +1,7 @@
+2013-07-22  Tobias Burnus  <burnus@net-b.de>
+
+       * trans-array.c (gfc_array_allocate): Correct memory-leak patch.
+
 2013-07-22  Tobias Burnus  <burnus@net-b.de>
 
        * trans-array.c (gfc_array_allocate,
index 5bcd67ddd5933aaac8b12cdb0670a55d6a110ae8..3fdd8d9ab01360a95bce25706e5523dd971af67b 100644 (file)
@@ -5209,29 +5209,31 @@ gfc_array_allocate (gfc_se * se, gfc_expr * expr, tree status, tree errmsg,
                              &se->pre, &set_descriptor_block, &overflow,
                              expr3_elem_size, nelems, expr3, ts);
 
-  if (status == NULL_TREE && dimension)
+  if (dimension)
     {
-
       var_overflow = gfc_create_var (integer_type_node, "overflow");
       gfc_add_modify (&se->pre, var_overflow, overflow);
 
-      /* Generate the block of code handling overflow.  */
-      msg = gfc_build_addr_expr (pchar_type_node,
-               gfc_build_localized_cstring_const
+      if (status == NULL_TREE)
+       {
+         /* Generate the block of code handling overflow.  */
+         msg = gfc_build_addr_expr (pchar_type_node,
+                   gfc_build_localized_cstring_const
                        ("Integer overflow when calculating the amount of "
                         "memory to allocate"));
-      error = build_call_expr_loc (input_location, gfor_fndecl_runtime_error,
-                                  1, msg);
-    }
-  else if (status != NULL_TREE)
-    {
-      tree status_type = TREE_TYPE (status);
-      stmtblock_t set_status_block;
+         error = build_call_expr_loc (input_location,
+                                      gfor_fndecl_runtime_error, 1, msg);
+       }
+      else
+       {
+         tree status_type = TREE_TYPE (status);
+         stmtblock_t set_status_block;
 
-      gfc_start_block (&set_status_block);
-      gfc_add_modify (&set_status_block, status,
-                     build_int_cst (status_type, LIBERROR_ALLOCATION));
-      error = gfc_finish_block (&set_status_block);
+         gfc_start_block (&set_status_block);
+         gfc_add_modify (&set_status_block, status,
+                         build_int_cst (status_type, LIBERROR_ALLOCATION));
+         error = gfc_finish_block (&set_status_block);
+       }
     }
 
   gfc_start_block (&elseblock);