cvs: ZendEngine2 / zend_mm.c

From: Date: Mon, 09 Dec 2002 08:27:23 +0000
Subject: cvs: ZendEngine2 / zend_mm.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-699@lists.php.net to get a copy of this message
andi Mon Dec 9 03:27:23 2002 EDT Modified files: /ZendEngine2 zend_mm.c Log: - Improvements Index: ZendEngine2/zend_mm.c diff -u ZendEngine2/zend_mm.c:1.15 ZendEngine2/zend_mm.c:1.16 --- ZendEngine2/zend_mm.c:1.15 Mon Dec 9 03:14:00 2002 +++ ZendEngine2/zend_mm.c Mon Dec 9 03:27:23 2002 @@ -57,8 +57,6 @@ #define ZEND_MM_ALIGNED_FREE_HEADER_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_free_block)) #define ZEND_MM_ALIGNED_SEGMENT_SIZE ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_segment)) -#define ZEND_MM_ALIGNED_MAX_HEADER_SIZE MAX(ZEND_MM_ALIGNED_HEADER_SIZE, ZEND_MM_ALIGNED_FREE_HEADER_SIZE) - /* Memory calculations */ #define ZEND_MM_BLOCK_AT(blk, offset) ((zend_mm_block *) (((char *) (blk))+(offset))) #define ZEND_MM_DATA_OF(p) ((void *) (((char *) (p))+ZEND_MM_ALIGNED_HEADER_SIZE)) @@ -313,10 +311,21 @@ /* segment size, size of block and size of guard block */ realloc_to_size = ZEND_MM_ALIGNED_SEGMENT_SIZE+true_size+ZEND_MM_ALIGNED_HEADER_SIZE; segment = realloc(segment, realloc_to_size); + if (segment != segment_copy) { - /* The segment moved. Fix the segment list */ - fprintf(stderr, "Segment moved! This is not handled right now\n"); - exit(1); + if (heap->segments_list == segment_copy) { + heap->segments_list = segment; + } else { + zend_mm_segment *seg = heap->segments_list; + + while (seg) { + if (seg->next_segment == segment_copy) { + seg->next_segment = segment; + break; + } + segment = segment->next_segment; + } + } } mm_block->size = true_size;

« previous php.zend-engine.cvs (#699) next »