All pastes #250027 Raw Edit

Untitled

public c v1 · immutable
#250027 ·published 2006-11-16 15:10 UTC
rendered paste body
--- zend_alloc.c.orig	2006-11-13 11:30:56.000000000 +0000+++ zend_alloc.c	2006-11-16 15:08:36.811910300 +0000@@ -381,18 +381,19 @@ #define ZEND_MM_ALIGNED_SIZE(size)			((size + ZEND_MM_ALIGNMENT - 1) & ZEND_MM_ALIGNMENT_MASK) #define ZEND_MM_ALIGNED_HEADER_SIZE			ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_block)) #define ZEND_MM_ALIGNED_FREE_HEADER_SIZE	ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_free_block))-#define ZEND_MM_ALIGNED_MIN_HEADER_SIZE		(sizeof(zend_mm_block)+END_MAGIC_SIZE>sizeof(zend_mm_free_block)?ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_block)+END_MAGIC_SIZE):ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_free_block)))+#define ZEND_MM_MIN_ALLOC_BLOCK_SIZE		ZEND_MM_ALIGNED_SIZE(ZEND_MM_ALIGNED_HEADER_SIZE + END_MAGIC_SIZE)+#define ZEND_MM_ALIGNED_MIN_FREE_SIZE		((ZEND_MM_MIN_ALLOC_BLOCK_SIZE > ZEND_MM_ALIGNED_FREE_HEADER_SIZE)?(ZEND_MM_MIN_ALLOC_BLOCK_SIZE):(ZEND_MM_ALIGNED_FREE_HEADER_SIZE)) #define ZEND_MM_ALIGNED_SEGMENT_SIZE		ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_segment)) -#define ZEND_MM_MIN_SIZE					(ZEND_MM_ALIGNED_MIN_HEADER_SIZE-(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE))+#define ZEND_MM_MIN_SIZE					(ZEND_MM_ALIGNED_MIN_FREE_SIZE-(ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE)) -#define ZEND_MM_MAX_SMALL_SIZE				(((ZEND_MM_NUM_BUCKETS-1)<<ZEND_MM_ALIGNMENT_LOG2)+ZEND_MM_ALIGNED_MIN_HEADER_SIZE)+#define ZEND_MM_MAX_SMALL_SIZE				(((ZEND_MM_NUM_BUCKETS-2)<<ZEND_MM_ALIGNMENT_LOG2)+ZEND_MM_ALIGNED_MIN_FREE_SIZE) -#define ZEND_MM_TRUE_SIZE(size)				(((long)size<(long)ZEND_MM_MIN_SIZE)?(ZEND_MM_ALIGNED_MIN_HEADER_SIZE):(ZEND_MM_ALIGNED_SIZE(size+ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE)))+#define ZEND_MM_TRUE_SIZE(size)				(((long)size<(long)ZEND_MM_MIN_SIZE)?(ZEND_MM_ALIGNED_MIN_FREE_SIZE):(ZEND_MM_ALIGNED_SIZE(size+ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE))) -#define ZEND_MM_BUCKET_INDEX(true_size)		((true_size>>ZEND_MM_ALIGNMENT_LOG2)-(ZEND_MM_ALIGNED_MIN_HEADER_SIZE>>ZEND_MM_ALIGNMENT_LOG2)+1)+#define ZEND_MM_BUCKET_INDEX(true_size)		((true_size>>ZEND_MM_ALIGNMENT_LOG2)-(ZEND_MM_ALIGNED_MIN_FREE_SIZE>>ZEND_MM_ALIGNMENT_LOG2)+1) -#define ZEND_MM_SMALL_SIZE(true_size)		(true_size < ZEND_MM_MAX_SMALL_SIZE)+#define ZEND_MM_SMALL_SIZE(true_size)		(true_size <= ZEND_MM_MAX_SMALL_SIZE)  /* Memory calculations */ #define ZEND_MM_BLOCK_AT(blk, offset)	((zend_mm_block *) (((char *) (blk))+(offset)))@@ -584,10 +585,13 @@ 	zend_mm_heap    *heap;  #if 0+{+	int i; 	for (i = 0; i < ZEND_MM_MAX_SMALL_SIZE; i++) { 		printf("%3d%c: %3ld %d %2ld\n", i, (i == ZEND_MM_MIN_SIZE?'*':' '), (long)ZEND_MM_TRUE_SIZE(i), ZEND_MM_SMALL_SIZE(ZEND_MM_TRUE_SIZE(i)), (long)ZEND_MM_BUCKET_INDEX(ZEND_MM_TRUE_SIZE(i))); 	} 	exit(0);+} #endif  	storage = handlers->init(params);@@ -1163,7 +1167,7 @@ 			size_t block_size = ZEND_MM_FREE_BLOCK_SIZE(best_fit); 			size_t remaining_size = block_size - true_size; -			if (remaining_size < ZEND_MM_ALIGNED_MIN_HEADER_SIZE) {+			if (remaining_size < ZEND_MM_ALIGNED_MIN_FREE_SIZE) { 				ZEND_MM_BLOCK(best_fit, ZEND_MM_USED_BLOCK, block_size); 			} else { 				zend_mm_free_block *new_free_block;@@ -1241,7 +1245,7 @@  		ZEND_MM_LAST_BLOCK(ZEND_MM_BLOCK_AT(best_fit, block_size)); -		if (remaining_size < ZEND_MM_ALIGNED_MIN_HEADER_SIZE) {+		if (remaining_size < ZEND_MM_ALIGNED_MIN_FREE_SIZE) { 			ZEND_MM_BLOCK(best_fit, ZEND_MM_USED_BLOCK, block_size); 		} else { 			zend_mm_free_block *new_free_block;@@ -1399,7 +1403,7 @@ 	if (true_size <= ZEND_MM_BLOCK_SIZE(mm_block)) { 		size_t remaining_size = ZEND_MM_BLOCK_SIZE(mm_block) - true_size; -		if (remaining_size >= ZEND_MM_ALIGNED_MIN_HEADER_SIZE) {+		if (remaining_size >= ZEND_MM_ALIGNED_MIN_FREE_SIZE) { 			zend_mm_free_block *new_free_block;  			HANDLE_BLOCK_INTERRUPTIONS();@@ -1440,7 +1444,7 @@ 			HANDLE_BLOCK_INTERRUPTIONS(); 			zend_mm_remove_from_free_list(heap, (zend_mm_free_block *) next_block); -			if (remaining_size < ZEND_MM_ALIGNED_MIN_HEADER_SIZE) {+			if (remaining_size < ZEND_MM_ALIGNED_MIN_FREE_SIZE) { 				ZEND_MM_BLOCK(mm_block, ZEND_MM_USED_BLOCK, block_size); 			} else { 				zend_mm_free_block *new_free_block;@@ -1540,7 +1544,7 @@ 		/* setup guard block */ 		ZEND_MM_LAST_BLOCK(ZEND_MM_BLOCK_AT(mm_block, block_size)); -		if (remaining_size < ZEND_MM_ALIGNED_MIN_HEADER_SIZE) {+		if (remaining_size < ZEND_MM_ALIGNED_MIN_FREE_SIZE) { 			ZEND_MM_BLOCK(mm_block, ZEND_MM_USED_BLOCK, block_size); 		} else { 			zend_mm_free_block *new_free_block;