// 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;
- UINT32 size;
+ const char * info;
+ uint32 size;
sMemBlockInfo * next;
sMemBlockInfo * prev;
} sMemBlockInfo;
// Private global variables
static sMemBlockInfo memoryInfo;
-//static UINT32 memoryMaxAllocated;
-static UINT32 currentAllocatedMemory;
-static UINT32 maximumAllocatedMemory;
+//static uint32 memoryMaxAllocated;
+static uint32 currentAllocatedMemory;
+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;
void memory_memoryUsage(FILE * fp)
{
- UINT32 total = 0;
+ uint32 total = 0;
fprintf(fp, "Memory usage:\n");
while (alias)
{
- fprintf(fp, "\t%16i bytes: <%s> (@ %08X)\n", (int)alias->size, alias->info, (unsigned int)alias->ptr);
+// fprintf(fp, "\t%16i bytes: <%s> (@ %08X)\n", (int)alias->size, alias->info, (unsigned int)alias->ptr);
+ fprintf(fp, "\t%16i bytes: <%s> (@ %08X)\n", (int)alias->size, alias->info, alias->ptr);
total += alias->size;
alias = alias->next;
}