Mercurial > repos > rhope
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;