From 3078848ea393c2269498b12f5bb809e85ec1af44 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Mon, 28 May 2007 18:39:35 +0200 Subject: [PATCH] re PR fortran/32124 (Execution stops with stat= in ALLOCATE) 2007-05-28 Tobias Burnus PR fortran/32124 * runtime/memory.c (allocate_size): Use ERROR_ALLOCATION. (allocate,allocate64): Use stat variable if present. From-SVN: r125133 --- libgfortran/ChangeLog | 6 ++++++ libgfortran/runtime/memory.c | 26 +++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 246eee50289f..f0b012b38fbd 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2007-05-28 Tobias Burnus + + PR fortran/32124 + * runtime/memory.c (allocate_size): Use ERROR_ALLOCATION. + (allocate,allocate64): Use stat variable if present. + 2007-05-27 Janne Blomqvist * runtime/string.c (compare0): Use gfc_charlen_type instead of diff --git a/libgfortran/runtime/memory.c b/libgfortran/runtime/memory.c index fe76675c9ad0..53643dc7ec6f 100644 --- a/libgfortran/runtime/memory.c +++ b/libgfortran/runtime/memory.c @@ -144,7 +144,7 @@ allocate_size (size_t size, GFC_INTEGER_4 * stat) { if (stat) { - *stat = 1; + *stat = ERROR_ALLOCATION; return newmem; } else @@ -164,8 +164,16 @@ void * allocate (GFC_INTEGER_4 size, GFC_INTEGER_4 * stat) { if (size < 0) - runtime_error ("Attempt to allocate negative amount of memory. " - "Possible integer overflow"); + { + if (stat) + { + *stat = ERROR_ALLOCATION; + return NULL; + } + else + runtime_error ("Attempt to allocate negative amount of memory. " + "Possible integer overflow"); + } return allocate_size ((size_t) size, stat); } @@ -177,8 +185,16 @@ void * allocate64 (GFC_INTEGER_8 size, GFC_INTEGER_4 * stat) { if (size < 0) - runtime_error ("ALLOCATE64: Attempt to allocate negative amount of " - "memory. Possible integer overflow"); + { + if (stat) + { + *stat = ERROR_ALLOCATION; + return NULL; + } + else + runtime_error ("ALLOCATE64: Attempt to allocate negative amount of " + "memory. Possible integer overflow"); + } return allocate_size ((size_t) size, stat); }