aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2007-05-28 18:39:35 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2007-05-28 18:39:35 +0200
commit3078848ea393c2269498b12f5bb809e85ec1af44 (patch)
treeac651ce2ab48b34d6f5845e8ef6a4638989a0d77
parent6124296bced0c241d3ad4de5017ed17ecfcea973 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--libgfortran/runtime/memory.c26
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);
}