X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=inline;f=Usermode%2FLibraries%2Flibc.so_src%2Fheap.c;h=3cbd0b53d34a385d74af8ceb0f59a5dcf0c1d42a;hb=2611b24a556e7881ef218e92b3ffc09a81339990;hp=bdf64de35fdc635674f8b91f55409dd401e17d3c;hpb=04a050f42807686dc119838c82372409246d55bb;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/heap.c b/Usermode/Libraries/libc.so_src/heap.c index bdf64de3..3cbd0b53 100644 --- a/Usermode/Libraries/libc.so_src/heap.c +++ b/Usermode/Libraries/libc.so_src/heap.c @@ -94,13 +94,16 @@ EXPORT void *malloc(size_t bytes) //Corrupt Heap Heap_Dump(); _SysDebug("malloc: Corrupt Heap\n"); + exit(128); return NULL; } curBlock = (heap_head*)((uintptr_t)curBlock + curBlock->size); } if((uintptr_t)curBlock < (uintptr_t)_heap_start) { + Heap_Dump(); _SysDebug("malloc: Heap underrun for some reason\n"); + exit(128); return NULL; } @@ -450,17 +453,15 @@ void Heap_Dump(void) heap_head *cur = _heap_start; while( cur < (heap_head*)_heap_end ) { - switch( cur->magic ) - { - case MAGIC: + if( cur->magic == MAGIC ) { _SysDebug("Used block %p[0x%x] - ptr=%p", cur, cur->size, cur->data); - break; - case MAGIC_FREE: + } + else if( cur->magic == MAGIC_FREE ) { _SysDebug("Free block %p[0x%x] - ptr=%p", cur, cur->size, cur->data); - break; - default: + } + else { _SysDebug("Block %p bad magic (0x%x)", cur, cur->magic); - return ; + break ; } cur = (void*)( (char*)cur + cur->size ); }