[BZ #2684]
2006-08-27 Ulrich Drepper <drepper@redhat.com> [BZ #2684] * malloc/malloc.c (public_rEALLOc): Try harder by using other arenas if allocation failed. Patch mostly by Jan Edler <jan.edler@indexengines.com>.
This commit is contained in:
parent
41999a1a37
commit
07014fcacd
|
@ -1,3 +1,10 @@
|
|||
2006-08-27 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #2684]
|
||||
* malloc/malloc.c (public_rEALLOc): Try harder by using other
|
||||
arenas if allocation failed.
|
||||
Patch mostly by Jan Edler <jan.edler@indexengines.com>.
|
||||
|
||||
2006-08-26 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* malloc/malloc.c (bin_at): Rewrite to be more clear and to not
|
||||
|
|
|
@ -3625,6 +3625,29 @@ public_rEALLOc(Void_t* oldmem, size_t bytes)
|
|||
(void)mutex_unlock(&ar_ptr->mutex);
|
||||
assert(!newp || chunk_is_mmapped(mem2chunk(newp)) ||
|
||||
ar_ptr == arena_for_chunk(mem2chunk(newp)));
|
||||
|
||||
if (newp == NULL)
|
||||
{
|
||||
/* Try harder to allocate memory in other arenas. */
|
||||
newp = public_mALLOc(bytes);
|
||||
if (newp != NULL)
|
||||
{
|
||||
MALLOC_COPY (newp, oldmem, oldsize - 2 * SIZE_SZ);
|
||||
#if THREAD_STATS
|
||||
if(!mutex_trylock(&ar_ptr->mutex))
|
||||
++(ar_ptr->stat_lock_direct);
|
||||
else {
|
||||
(void)mutex_lock(&ar_ptr->mutex);
|
||||
++(ar_ptr->stat_lock_wait);
|
||||
}
|
||||
#else
|
||||
(void)mutex_lock(&ar_ptr->mutex);
|
||||
#endif
|
||||
_int_free(ar_ptr, oldmem);
|
||||
(void)mutex_unlock(&ar_ptr->mutex);
|
||||
}
|
||||
}
|
||||
|
||||
return newp;
|
||||
}
|
||||
#ifdef libc_hidden_def
|
||||
|
|
Loading…
Reference in a new issue