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); }