diff --git a/ChangeLog b/ChangeLog index 47ced660ad..91d90259c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-09-12 Jakub Jelinek + + * malloc/malloc.c (struct malloc_chunk): Fix comment typo. + (public_cALLOc): For mmapped chunks and perturb_byte != 0, + don't clear SIZE_SZ bytes more than should be cleared. + 2005-09-09 Jakub Jelinek * inet/getnetgrent_r.c: Include assert. diff --git a/malloc/malloc.c b/malloc/malloc.c index 65be277097..64050b4266 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -1726,7 +1726,7 @@ struct malloc_chunk { mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | User data starts here... . . . - . (malloc_usable_space() bytes) . + . (malloc_usable_size() bytes) . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of chunk | @@ -3691,8 +3691,12 @@ public_cALLOc(size_t n, size_t elem_size) /* Two optional cases in which clearing not necessary */ #if HAVE_MMAP - if (perturb_byte == 0 && chunk_is_mmapped(p)) - return mem; + if (chunk_is_mmapped (p)) + { + if (__builtin_expect (perturb_byte, 0)) + MALLOC_ZERO (mem, sz); + return mem; + } #endif csz = chunksize(p);