diff options
author | Tobias Burnus <burnus@net-b.de> | 2007-05-28 18:39:35 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2007-05-28 18:39:35 +0200 |
commit | 3078848ea393c2269498b12f5bb809e85ec1af44 (patch) | |
tree | ac651ce2ab48b34d6f5845e8ef6a4638989a0d77 | |
parent | 6124296bced0c241d3ad4de5017ed17ecfcea973 (diff) | |
download | gcc-3078848ea393c2269498b12f5bb809e85ec1af44.zip gcc-3078848ea393c2269498b12f5bb809e85ec1af44.tar.gz gcc-3078848ea393c2269498b12f5bb809e85ec1af44.tar.bz2 |
re PR fortran/32124 (Execution stops with stat= in ALLOCATE)
2007-05-28 Tobias Burnus <burnus@net-b.de>
PR fortran/32124
* runtime/memory.c (allocate_size): Use ERROR_ALLOCATION.
(allocate,allocate64): Use stat variable if present.
From-SVN: r125133
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/runtime/memory.c | 26 |
2 files changed, 27 insertions, 5 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 246eee5..f0b012b 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2007-05-28 Tobias Burnus <burnus@net-b.de> + + PR fortran/32124 + * runtime/memory.c (allocate_size): Use ERROR_ALLOCATION. + (allocate,allocate64): Use stat variable if present. + 2007-05-27 Janne Blomqvist <jb@gcc.gnu.org> * runtime/string.c (compare0): Use gfc_charlen_type instead of diff --git a/libgfortran/runtime/memory.c b/libgfortran/runtime/memory.c index fe76675..53643dc 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); } |