From: Dmitry Stogov Date: Mon, 13 Nov 2006 10:28:57 +0000 (+0000) Subject: Fixed incorrect heap corruptiuon detection code X-Git-Tag: RELEASE_1_0_0RC1~1037 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eae5ec4197f14d79a8e0fc7c3d9105f0b10bc060;p=php Fixed incorrect heap corruptiuon detection code --- diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 9e948760de..57efe89aff 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -666,6 +666,15 @@ static long zend_mm_find_leaks(zend_mm_segment *segment, zend_mm_block *b) p = ZEND_MM_NEXT_BLOCK(b); while (1) { + if (ZEND_MM_IS_GUARD_BLOCK(p)) { + ZEND_MM_CHECK_MAGIC(p, MEM_BLOCK_GUARD); + segment = segment->next_segment; + if (!segment) { + break; + } + p = (zend_mm_block *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); + continue; + } q = ZEND_MM_NEXT_BLOCK(p); if (q <= p || (char*)q > (char*)segment + segment->size || @@ -686,14 +695,6 @@ static long zend_mm_find_leaks(zend_mm_segment *segment, zend_mm_block *b) zend_mm_panic("zend_mm_heap corrupted"); } } - if (ZEND_MM_IS_GUARD_BLOCK(q)) { - ZEND_MM_CHECK_MAGIC(q, MEM_BLOCK_GUARD); - segment = segment->next_segment; - if (!segment) { - break; - } - q = (zend_mm_block *) ((char *) segment + ZEND_MM_ALIGNED_SEGMENT_SIZE); - } p = q; } return leaks;