#include <heap_int.h>
#define WARNINGS 1
-#define DEBUG_TRACE 1
+#define DEBUG_TRACE 0
#define VERBOSE_DUMP 0
// === CONSTANTS ===
*/
void *Heap_Reallocate(const char *File, int Line, void *__ptr, size_t __size)
{
- tHeapHead *head = (void*)( (Uint)__ptr-8 );
+ tHeapHead *head = (void*)( (Uint)__ptr-sizeof(tHeapHead) );
tHeapHead *nextHead;
tHeapFoot *foot;
Uint newSize = (__size + sizeof(tHeapFoot)+sizeof(tHeapHead)+MIN_SIZE-1)&~(MIN_SIZE-1);
return 1;
}
+/**
+ */
+void Heap_Validate(void)
+{
+ Heap_Dump();
+}
+
#if WARNINGS
void Heap_Dump(void)
{
tHeapHead *head, *badHead;
- tHeapFoot *foot;
+ tHeapFoot *foot = NULL;
head = gHeapStart;
while( (Uint)head < (Uint)gHeapEnd )
head = foot->NextHead;
}
+ // If the heap is valid, ok!
+ if( (tVAddr)head == (tVAddr)gHeapEnd )
+ return ;
+
// Check for a bad return
if( (tVAddr)head >= (tVAddr)gHeapEnd )
return ;
head = foot->Head;
Log_Debug("Heap", "head=%p", head);
}
+
+ Panic("Heap_Dump - Heap is corrupted, kernel panic!");
}
#endif