From f1e9c1336b80b18342413900e5b7cb4e3f2a039c Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Fri, 1 Jun 2012 22:40:36 +0200 Subject: [PATCH] re PR fortran/53521 (Memory leak with zero-sized array constructor) 2012-06-01 Tobias Burnus PR fortran/53521 * trans.c (gfc_deallocate_scalar_with_status): Properly handle the case size == 0. From-SVN: r188125 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans.c | 12 +----------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9271062ecf50..6807f7f1f78b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-06-01 Tobias Burnus + + PR fortran/53521 + * trans.c (gfc_deallocate_scalar_with_status): Properly + handle the case size == 0. + 2012-03-06 Tobias Burnus Backport from mainline diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 6ce25543c859..3f41bf2faf11 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -920,15 +920,12 @@ internal_realloc (void *mem, size_t size) if (!res && size != 0) _gfortran_os_error ("Out of memory"); - if (size == 0) - return NULL; - return res; } */ tree gfc_call_realloc (stmtblock_t * block, tree mem, tree size) { - tree msg, res, negative, nonzero, zero, null_result, tmp; + tree msg, res, negative, nonzero, null_result, tmp; tree type = TREE_TYPE (mem); size = gfc_evaluate_now (size, block); @@ -969,13 +966,6 @@ gfc_call_realloc (stmtblock_t * block, tree mem, tree size) build_empty_stmt (input_location)); gfc_add_expr_to_block (block, tmp); - /* if (size == 0) then the result is NULL. */ - tmp = fold_build2 (MODIFY_EXPR, type, res, build_int_cst (type, 0)); - zero = fold_build1 (TRUTH_NOT_EXPR, boolean_type_node, nonzero); - tmp = fold_build3 (COND_EXPR, void_type_node, zero, tmp, - build_empty_stmt (input_location)); - gfc_add_expr_to_block (block, tmp); - return res; } -- 2.47.2