@@ -596,7 +596,7 @@ heap_trim (heap_info *heap, size_t pad)
{
mstate ar_ptr = heap->ar_ptr;
unsigned long pagesz = GLRO (dl_pagesize);
- mchunkptr top_chunk = top (ar_ptr), p, bck, fwd;
+ mchunkptr top_chunk = top (ar_ptr), p;
heap_info *prev_heap;
long new_size, top_size, top_area, extra, prev_size, misalign;
@@ -625,7 +625,7 @@ heap_trim (heap_info *heap, size_t pad)
if (!prev_inuse (p)) /* consolidate backward */
{
p = prev_chunk (p);
- unlink (ar_ptr, p, bck, fwd);
+ unlink_chunk (ar_ptr, p);
}
assert (((unsigned long) ((char *) p + new_size) & (pagesz - 1)) == 0);
assert (((char *) p + new_size) == ((char *) heap + heap->size));
@@ -1385,11 +1385,11 @@ typedef struct malloc_chunk *mbinptr;
#define last(b) ((b)->bk)
/* Take a chunk off a bin list */
-#define unlink(AV, P, BK, FD) { \
+#define unlink_chunk(AV, P) ({ \
if (__builtin_expect (chunksize(P) != prev_size (next_chunk(P)), 0)) \
malloc_printerr ("corrupted size vs. prev_size"); \
- FD = P->fd; \
- BK = P->bk; \
+ mchunkptr FD = P->fd; \
+ mchunkptr BK = P->bk; \
if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) \
malloc_printerr ("corrupted double-linked list"); \
else { \
@@ -1415,7 +1415,7 @@ typedef struct malloc_chunk *mbinptr;
} \
} \
} \
-}
+})
/*
Indexing
@@ -3920,7 +3920,7 @@ _int_malloc (mstate av, size_t bytes)
victim = victim->fd;
remainder_size = size - nb;
- unlink (av, victim, bck, fwd);
+ unlink_chunk (av, victim);
/* Exhaust */
if (remainder_size < MINSIZE)
@@ -4022,7 +4022,7 @@ _int_malloc (mstate av, size_t bytes)
remainder_size = size - nb;
/* unlink */
- unlink (av, victim, bck, fwd);
+ unlink_chunk (av, victim);
/* Exhaust */
if (remainder_size < MINSIZE)
@@ -4294,7 +4294,7 @@ _int_free (mstate av, mchunkptr p, int have_lock)
p = chunk_at_offset(p, -((long) prevsize));
if (__glibc_unlikely (chunksize(p) != prevsize))
malloc_printerr ("corrupted size vs. prev_size while consolidating");
- unlink(av, p, bck, fwd);
+ unlink_chunk (av, p);
}
if (nextchunk != av->top) {
@@ -4303,7 +4303,7 @@ _int_free (mstate av, mchunkptr p, int have_lock)
/* consolidate forward */
if (!nextinuse) {
- unlink(av, nextchunk, bck, fwd);
+ unlink_chunk (av, nextchunk);
size += nextsize;
} else
clear_inuse_bit_at_offset(nextchunk, 0);
@@ -4416,8 +4416,6 @@ static void malloc_consolidate(mstate av)
INTERNAL_SIZE_T nextsize;
INTERNAL_SIZE_T prevsize;
int nextinuse;
- mchunkptr bck;
- mchunkptr fwd;
atomic_store_relaxed (&av->have_fastchunks, false);
@@ -4457,7 +4455,7 @@ static void malloc_consolidate(mstate av)
p = chunk_at_offset(p, -((long) prevsize));
if (__glibc_unlikely (chunksize(p) != prevsize))
malloc_printerr ("corrupted size vs. prev_size in fastbins");
- unlink(av, p, bck, fwd);
+ unlink_chunk (av, p);
}
if (nextchunk != av->top) {
@@ -4465,7 +4463,7 @@ static void malloc_consolidate(mstate av)
if (!nextinuse) {
size += nextsize;
- unlink(av, nextchunk, bck, fwd);
+ unlink_chunk (av, nextchunk);
} else
clear_inuse_bit_at_offset(nextchunk, 0);
@@ -4513,9 +4511,6 @@ _int_realloc(mstate av, mchunkptr oldp, INTERNAL_SIZE_T oldsize,
mchunkptr remainder; /* extra space at end of newp */
unsigned long remainder_size; /* its size */
- mchunkptr bck; /* misc temp for linking */
- mchunkptr fwd; /* misc temp for linking */
-
unsigned long copysize; /* bytes to copy */
unsigned int ncopies; /* INTERNAL_SIZE_T words to copy */
INTERNAL_SIZE_T* s; /* copy source */
@@ -4565,7 +4560,7 @@ _int_realloc(mstate av, mchunkptr oldp, INTERNAL_SIZE_T oldsize,
(unsigned long) (nb))
{
newp = oldp;
- unlink (av, next, bck, fwd);
+ unlink_chunk (av, next);
}
/* allocate, copy, free */