aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/sys/arm/syscalls.c12
2 files changed, 15 insertions, 2 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index c4ad7cc..7972245 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-17 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * libc/sys/arm/syscalls.c (_sbrk): Return -1 rather than aborting
+ if too much memory is requested.
+
2002-01-11 Jeff Johnston <jjohnstn@redhat.com>
* libc/stdio/vfscanf.c (__svfscanf_r): Change loop that
diff --git a/newlib/libc/sys/arm/syscalls.c b/newlib/libc/sys/arm/syscalls.c
index 795f778..0483d48 100644
--- a/newlib/libc/sys/arm/syscalls.c
+++ b/newlib/libc/sys/arm/syscalls.c
@@ -470,8 +470,6 @@ _getpid (int n)
n = n;
}
-extern void abort (void);
-
caddr_t
_sbrk (int incr)
{
@@ -486,8 +484,18 @@ _sbrk (int incr)
if (heap_end + incr > stack_ptr)
{
+ /* Some of the libstdc++-v3 tests rely upon detecting
+ out of memory errors, so do not abort here. */
+#if 0
+ extern void abort (void);
+
_write (1, "_sbrk: Heap and stack collision\n", 32);
+
abort ();
+#else
+ errno = ENOMEM;
+ return -1;
+#endif
}
heap_end += incr;