* malloc/malloc.c (sYSMALLOc): Only call grow_heap if
	(long) (MINSIZE + nb - old_size) is positive.

	* malloc/arena.c (grow_heap): When growing bail even if new_size
	is negative.
This commit is contained in:
Ulrich Drepper 2006-09-07 16:06:54 +00:00
parent ba40cc1540
commit 469615bdd4
3 changed files with 10 additions and 2 deletions

View File

@ -1,5 +1,12 @@
2006-09-07 Jakub Jelinek <jakub@redhat.com> 2006-09-07 Jakub Jelinek <jakub@redhat.com>
[BZ #2775]
* malloc/malloc.c (sYSMALLOc): Only call grow_heap if
(long) (MINSIZE + nb - old_size) is positive.
* malloc/arena.c (grow_heap): When growing bail even if new_size
is negative.
[BZ #3155] [BZ #3155]
* sysdeps/powerpc/powerpc32/fpu/s_lrint.S (__lrint): Don't access * sysdeps/powerpc/powerpc32/fpu/s_lrint.S (__lrint): Don't access
stack below r1. stack below r1.

View File

@ -712,7 +712,7 @@ grow_heap(h, diff) heap_info *h; long diff;
if(diff >= 0) { if(diff >= 0) {
diff = (diff + page_mask) & ~page_mask; diff = (diff + page_mask) & ~page_mask;
new_size = (long)h->size + diff; new_size = (long)h->size + diff;
if(new_size > HEAP_MAX_SIZE) if((unsigned long) new_size > (unsigned long) HEAP_MAX_SIZE)
return -1; return -1;
if(mprotect((char *)h + h->size, diff, PROT_READ|PROT_WRITE) != 0) if(mprotect((char *)h + h->size, diff, PROT_READ|PROT_WRITE) != 0)
return -2; return -2;

View File

@ -2970,7 +2970,8 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
/* First try to extend the current heap. */ /* First try to extend the current heap. */
old_heap = heap_for_ptr(old_top); old_heap = heap_for_ptr(old_top);
old_heap_size = old_heap->size; old_heap_size = old_heap->size;
if (grow_heap(old_heap, MINSIZE + nb - old_size) == 0) { if ((long) (MINSIZE + nb - old_size) > 0
&& grow_heap(old_heap, MINSIZE + nb - old_size) == 0) {
av->system_mem += old_heap->size - old_heap_size; av->system_mem += old_heap->size - old_heap_size;
arena_mem += old_heap->size - old_heap_size; arena_mem += old_heap->size - old_heap_size;
#if 0 #if 0