]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
malloc: Fix MALLOC_DEBUG
authorWilco Dijkstra <wilco.dijkstra@arm.com>
Fri, 8 Aug 2025 14:00:43 +0000 (14:00 +0000)
committerWilco Dijkstra <wilco.dijkstra@arm.com>
Fri, 8 Aug 2025 14:00:43 +0000 (14:00 +0000)
MALLOC_DEBUG only works on locked arenas, so move the call to
check_inuse_chunk from __libc_free() to _int_free_chunk().
Regress now passes if MALLOC_DEBUG is enabled.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
malloc/malloc.c

index 5257ee24fdff9320333368c11439a38d08904752..3a8aaeb665cc5d5027a82ef50e34af229d3321b4 100644 (file)
@@ -3456,8 +3456,6 @@ __libc_free (void *mem)
   if (__glibc_unlikely (misaligned_chunk (p)))
     return malloc_printerr_tail ("free(): invalid pointer");
 
-  check_inuse_chunk (arena_for_chunk (p), p);
-
 #if USE_TCACHE
   if (__glibc_likely (size < mp_.tcache_max_bytes && tcache != NULL))
     {
@@ -4680,6 +4678,8 @@ _int_free_merge_chunk (mstate av, mchunkptr p, INTERNAL_SIZE_T size)
 {
   mchunkptr nextchunk = chunk_at_offset(p, size);
 
+  check_inuse_chunk (av, p);
+
   /* Lightweight tests: check whether the block is already the
      top block.  */
   if (__glibc_unlikely (p == av->top))