]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
[BZ #3313]
authorUlrich Drepper <drepper@redhat.com>
Fri, 13 Oct 2006 20:53:14 +0000 (20:53 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 13 Oct 2006 20:53:14 +0000 (20:53 +0000)
* malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
determine highest fast bin to consolidate, always look into all of
them.
(do_check_malloc_state): Only require for empty bins for large
sizes in main arena.

ChangeLog
malloc/malloc.c

index 941d2f422313c9c733618bc43c844c16b66dc7b6..76654d30c37f9acfb7abebfa6743c3191f04e517 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,11 @@
 2006-10-13  Ulrich Drepper  <drepper@redhat.com>
 
-       * malloc/malloc.c (do_check_malloc_state): Only require for empty
-       bins for large sizes in main arena.
+       [BZ #3313]
+       * malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to
+       determine highest fast bin to consolidate, always look into all of
+       them.
+       (do_check_malloc_state): Only require for empty bins for large
+       sizes in main arena.
 
        * libio/stdio.h: Add more __wur attributes.
 
index e4b693c3425d535c7a9531eaded3d2815ceaabd9..38ceb1e90958c91b95f9910ac8c4a7682f4109fa 100644 (file)
@@ -4692,7 +4692,15 @@ static void malloc_consolidate(av) mstate av;
       reused anyway.
     */
 
+#if 0
+    /* It is wrong to limit the fast bins to search using get_max_fast
+       because, except for the main arena, all the others might have
+       blocks in the high fast bins.  It's not worth it anyway, just
+       search all bins all the time.  */
     maxfb = &(av->fastbins[fastbin_index(get_max_fast ())]);
+#else
+    maxfb = &(av->fastbins[NFASTBINS]);
+#endif
     fb = &(av->fastbins[0]);
     do {
       if ( (p = *fb) != 0) {