// Cleanups by James L. Hammons
//
+#include "memory.h"
+
#include <malloc.h>
#include <stdlib.h>
#include "log.h"
-#include "memory.h"
+
+#warning This module needs some serious cleanup. !!! FIX !!!
// Useful structs (for doubly linked list in this case)
typedef struct sMemBlockInfo
{
void * ptr;
- char * info;
+ const char * info;
uint32 size;
sMemBlockInfo * next;
sMemBlockInfo * prev;
static uint32 maximumAllocatedMemory;
-void memory_addMemInfo(void * ptr, uint32 size, char * info)
+void memory_addMemInfo(void * ptr, uint32 size, const char * info)
{
sMemBlockInfo * alias = &memoryInfo;
alias->info = info;
}
-void InitMemory(void)
+void MemoryInit(void)
{
memoryInfo.next = memoryInfo.prev = NULL;
currentAllocatedMemory = maximumAllocatedMemory = 0;
{
}
-void * memory_malloc(uint32 size, char * info)
+void * memory_malloc(uint32 size, const char * info)
{
void * ptr = (void *)malloc(size);
return ptr;
}
-void memory_malloc_secure(void ** new_ptr, uint32 size, char * info)
+// OK, this sux, causes the compiler to complain about type punned pointers.
+// The only difference between this and the previous is that this one ABORTS
+// if it can't allocate the memory. BAD BAD BAD
+
+void memory_malloc_secure(void ** new_ptr, uint32 size, const char * info)
{
WriteLog("Memory: Allocating %i bytes of memory for <%s>...", size, (info == NULL ? "unknown" : info));
if (ptr == NULL)
{
WriteLog("Failed!\n");
- log_done();
+ LogDone();
+
+#warning BAD, BAD, BAD! Need to do better than this!!!
+#warning And since we ARE keeping track of all memory allocations, we should unwind the stack here as well...!
+#warning !!! FIX !!!
+
exit(0);
}
WriteLog("OK\n");
}
+/*
+void * memory_malloc_secure2(uint32 size, const char * info)
+{
+ WriteLog("Memory: Allocating %i bytes of memory for <%s>...", size, (info == NULL ? "unknown" : info));
+
+ void * ptr = malloc(size);
+
+ if (ptr == NULL)
+ {
+ WriteLog("Failed!\n");
+ log_done();
+
+//BAD, BAD, BAD! Need to do better than this!!!
+//And since we ARE keeping track of all memory allocations, we should unwind the stack here as well...!
+// !!! FIX !!!
+
+ exit(0);
+ }
+
+ memory_addMemInfo(ptr, size, info);
+ currentAllocatedMemory += size;
+
+ if (currentAllocatedMemory > maximumAllocatedMemory)
+ maximumAllocatedMemory = currentAllocatedMemory;
+
+ new_ptr = ptr;
+ WriteLog("OK\n");
+}
+*/
+
void memory_free(void * ptr)
{
// sMemBlockInfo * alias= &memoryInfo;