diff runtime/fixed_alloc.c @ 63:04baa003de5a

Merged latest changes with better C branch
author Mike Pavone <pavone@retrodev.com>
date Wed, 05 May 2010 22:12:23 -0400
parents 3e20ed8959c4
children d1569087348f
line wrap: on
line diff
--- a/runtime/fixed_alloc.c	Sat Oct 10 16:43:37 2009 -0400
+++ b/runtime/fixed_alloc.c	Wed May 05 22:12:23 2010 -0400
@@ -1,5 +1,6 @@
 #include "fixed_alloc.h"
-#include <stdlib.h>
+#include <stdlib.h>
+#include <string.h>
 
 uint16_t max_free[(MAX_SIZE-MIN_SIZE)/STRIDE];
 
@@ -35,11 +36,13 @@
 		if(block)
 		{
 			--manager->freecount;
-			manager->freelist = block->next;
+			manager->freelist = block->next;
+			memset(block, 0xCD, BLOCK_SIZE);
 		}
 		else
 		{
-			block = block_alloc(BLOCK_SIZE);
+			block = block_alloc(BLOCK_SIZE);
+			memset(block, 0xAB, BLOCK_SIZE);
 		}
 		manager->inuse[bucket] = block;
 		block->next = NULL;
@@ -78,7 +81,6 @@
 			block->next->last = block->last;
 	}
 	i = i*8+bit;
-	//printf("%X\n", ((char *)block)+BLOCK_SIZE-((i+1)*size));
 	return (void *)(((char *)block)+BLOCK_SIZE-((i+1)*size));
 }
 
@@ -92,7 +94,8 @@
 		return;
 	}
 	//puts("ffree");
-	size = ADJUST_SIZE(size);
+	size = ADJUST_SIZE(size);
+	memset(ptr, 0xEF, size);
 	block = GET_BLOCK(ptr);
 	i = (((((char *)block) + BLOCK_SIZE) - ((char *)ptr))/size)-1;
 	bit = i & 0x7;
@@ -118,8 +121,10 @@
 			manager->inuse[bucket] = block->next;
 		if(block->next)
 			block->next->last = block->last;
-		if(manager->freecount == MAX_FREE)
-			block_free(block, BLOCK_SIZE);
+		if(manager->freecount == MAX_FREE)
+		{
+			block_free(block, BLOCK_SIZE);
+		}
 		else
 		{
 			block->next = manager->freelist;