aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-07-22 02:16:52 +0000
committerUlrich Drepper <drepper@redhat.com>2000-07-22 02:16:52 +0000
commitf74e61f05626503cc5e469b940bdb149c98d7ab8 (patch)
tree9ad75ab5388fcecef7d2718aca473d4c97900ae7
parent58bad8033d028e42b9585ffa9e2eaac29901368a (diff)
downloadglibc-f74e61f05626503cc5e469b940bdb149c98d7ab8.zip
glibc-f74e61f05626503cc5e469b940bdb149c98d7ab8.tar.gz
glibc-f74e61f05626503cc5e469b940bdb149c98d7ab8.tar.bz2
Update.
2000-07-21 Wolfram Gloger <wg@malloc.de> * malloc/malloc.c (chunk_alloc): Try mmap_chunk() for smaller allocations only if a non-main arena cannot be extended. * sysdeps/powerpc/bp-asm.h (DISCARD_BOUNDS): Rename from UNCHECK_BOUNDS.
-rw-r--r--ChangeLog8
-rw-r--r--malloc/malloc.c9
2 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index ddb72d8..342c1fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-07-21 Wolfram Gloger <wg@malloc.de>
+
+ * malloc/malloc.c (chunk_alloc): Try mmap_chunk() for smaller
+ allocations only if a non-main arena cannot be extended.
+
2000-07-21 Ulrich Drepper <drepper@redhat.com>
* elf/dl-load.c (_dl_map_object): Take loader==NULL into account
@@ -21,7 +26,8 @@
2000-07-21 Greg McGary <greg@mcgary.org>
- * sysdeps/powerpc/bp-asm.h (DISCARD_BOUNDS): Rename from UNCHECK_BOUNDS.
+ * sysdeps/powerpc/bp-asm.h (DISCARD_BOUNDS): Rename from
+ UNCHECK_BOUNDS.
* sysdeps/powerpc/bits/setjmp.h (JB_SIZE): New constant.
* sysdeps/powerpc/elf/libc-start.c (__libc_start_main):
Wrap bounds around argv & envp and each of their string members.
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 68d8752..ce8de80 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -2938,9 +2938,12 @@ chunk_alloc(ar_ptr, nb) arena *ar_ptr; INTERNAL_SIZE_T nb;
if ((remainder_size = chunksize(top(ar_ptr)) - nb) < (long)MINSIZE)
{
#if HAVE_MMAP
- /* A last attempt: when we are out of address space in the arena,
- try mmap anyway, as long as it is allowed at all. */
- if (n_mmaps_max > 0 && (victim = mmap_chunk(nb)) != 0)
+ /* A last attempt: when we are out of address space in a
+ non-main arena, try mmap anyway, as long as it is allowed at
+ all. */
+ if (ar_ptr != &main_arena &&
+ n_mmaps_max > 0 &&
+ (victim = mmap_chunk(nb)) != 0)
return victim;
#endif
return 0; /* propagate failure */