* malloc/malloc.c (_int_malloc): Limit number of unsorted blocks

to sort in each call.
This commit is contained in:
Ulrich Drepper 2006-08-19 22:34:27 +00:00
parent ed3691bab2
commit 72320021f7
2 changed files with 11 additions and 0 deletions

View File

@ -1,5 +1,8 @@
2006-08-19 Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c (_int_malloc): Limit number of unsorted blocks
to sort in each call.
* nis/nss_nis/nis-service.c (internal_nis_getservent_r): . If map
is empty simply return and use next service.
* nis/nss_nis/nis-rpc.c (internal_nis_getrpcent_r): Likewise.

View File

@ -4055,6 +4055,8 @@ _int_malloc(mstate av, size_t bytes)
for(;;) {
int iters = 0;
bool any_larger = false;
while ( (victim = unsorted_chunks(av)->bk) != unsorted_chunks(av)) {
bck = victim->bk;
if (__builtin_expect (victim->size <= 2 * SIZE_SZ, 0)
@ -4145,6 +4147,12 @@ _int_malloc(mstate av, size_t bytes)
}
}
if (size >= nb)
any_larger = true;
#define MAX_ITERS 10000
if (++iters == MAX_ITERS)
break;
mark_bin(av, victim_index);
victim->bk = bck;
victim->fd = fwd;