From 9731d9f30343b2efae4d3298520eb943f09c8c9c Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Thu, 4 Mar 2004 09:18:05 +0000 Subject: [PATCH] Handle out of memory/bad size situation gracefully, without getting into loop --- Zend/zend_mm.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Zend/zend_mm.c b/Zend/zend_mm.c index 1dc57ba0c5..71a24c11ea 100644 --- a/Zend/zend_mm.c +++ b/Zend/zend_mm.c @@ -318,9 +318,15 @@ zend_mm_finished_searching_for_block: if (!best_fit) { if (true_size > (heap->block_size - ZEND_MM_ALIGNED_SEGMENT_SIZE - ZEND_MM_ALIGNED_HEADER_SIZE)) { /* Make sure we add a memory block which is big enough */ - zend_mm_add_memory_block(heap, true_size + ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE); + if (zend_mm_add_memory_block(heap, true_size + ZEND_MM_ALIGNED_SEGMENT_SIZE + ZEND_MM_ALIGNED_HEADER_SIZE)) { + zend_error(E_ERROR, "Out of memory: cannot allocate %d bytes!", true_size); + return NULL; + } } else { - zend_mm_add_memory_block(heap, heap->block_size); + if (zend_mm_add_memory_block(heap, heap->block_size)) { + zend_error(E_ERROR, "Out of memory: cannot allocate %d bytes!", heap->block_size); + return NULL; + } } return zend_mm_alloc(heap, size); } -- 2.50.1