diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-04-28 10:20:18 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-04-28 10:20:18 +0000 |
commit | 7c2b945e1fd64e0a5a4dbd6ae6592a7314dcd4b5 (patch) | |
tree | a2d2a02476774a6612b7576d7d66767f0489e847 /malloc/malloc.c | |
parent | 925ed47cfb2729953655f001df6cb9bd82360e19 (diff) | |
download | glibc-7c2b945e1fd64e0a5a4dbd6ae6592a7314dcd4b5.tar glibc-7c2b945e1fd64e0a5a4dbd6ae6592a7314dcd4b5.tar.gz glibc-7c2b945e1fd64e0a5a4dbd6ae6592a7314dcd4b5.tar.bz2 glibc-7c2b945e1fd64e0a5a4dbd6ae6592a7314dcd4b5.zip |
Update.
* malloc/malloc.c (rEALLOc): Only free memory for size 0 if oldmem
is != NULL.
1999-04-28 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* malloc/malloc.c (REALLOC_ZERO_BYTES_FREES): Define it to follow
ISO C9x and Unix98.
1999-04-28 Ulrich Drepper <drepper@cygnus.com>
Diffstat (limited to 'malloc/malloc.c')
-rw-r--r-- | malloc/malloc.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/malloc/malloc.c b/malloc/malloc.c index 03d68b75e7..4bdc2585cb 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -1,5 +1,5 @@ /* Malloc implementation for multiple threads without lock contention. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> and Doug Lea <dl@cs.oswego.edu>, 1996. @@ -373,7 +373,7 @@ extern "C" { */ -/* #define REALLOC_ZERO_BYTES_FREES */ +#define REALLOC_ZERO_BYTES_FREES /* @@ -2000,9 +2000,9 @@ grow_heap(h, diff) heap_info *h; long diff; new_size = (long)h->size + diff; if(new_size < (long)sizeof(*h)) return -1; - /* Try to re-map the extra heap space freshly to save memory, and - make it inaccessible. */ - if((char *)MMAP((char *)h + new_size, -diff, PROT_NONE, + /* Try to re-map the extra heap space freshly to save memory, and + make it inaccessible. */ + if((char *)MMAP((char *)h + new_size, -diff, PROT_NONE, MAP_PRIVATE|MAP_FIXED) == (char *) MAP_FAILED) return -2; } @@ -2159,9 +2159,9 @@ static void do_check_chunk(ar_ptr, p) arena *ar_ptr; mchunkptr p; if(ar_ptr != &main_arena) { heap_info *heap = heap_for_ptr(p); assert(heap->ar_ptr == ar_ptr); - if(p != top(ar_ptr)) - assert((char *)p + sz <= (char *)heap + heap->size); - else + if(p != top(ar_ptr)) + assert((char *)p + sz <= (char *)heap + heap->size); + else assert((char *)p + sz == (char *)heap + heap->size); return; } @@ -3111,7 +3111,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes; #endif #ifdef REALLOC_ZERO_BYTES_FREES - if (bytes == 0) { fREe(oldmem); return 0; } + if (bytes == 0 && oldmem != NULL) { fREe(oldmem); return 0; } #endif /* realloc of null is supposed to be same as malloc */ |