cvs: ZendEngine2 / zend_mm.c
| From: | Andi Gutmans | 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;