diff --git a/sc2/src/sc2code/libs/memlib.h b/sc2/src/sc2code/libs/memlib.h index 00868d27d..d8d2761e9 100644 --- a/sc2/src/sc2code/libs/memlib.h +++ b/sc2/src/sc2code/libs/memlib.h @@ -21,6 +21,11 @@ #include "compiler.h" +extern BOOLEAN mem_init (void); +extern BOOLEAN mem_uninit (void); + +#ifdef LEGACY_HANDLE_ALLOCATOR + #define NULL_HANDLE (MEM_HANDLE)(0L) typedef signed long MEM_SIZE; @@ -44,9 +49,6 @@ typedef struct mem_header { #define GET_MEM_HEADER(addr) ((MEM_HEADER *) \ (((char *) addr) - sizeof (MEM_HEADER))) -extern BOOLEAN mem_init (void); -extern BOOLEAN mem_uninit (void); - extern MEM_HANDLE mem_allocate (MEM_SIZE size, MEM_FLAGS flags); extern BOOLEAN mem_release (MEM_HANDLE handle); @@ -55,5 +57,7 @@ extern BOOLEAN mem_unlock (MEM_HANDLE handle); extern MEM_SIZE mem_get_size (MEM_HANDLE handle); +#endif /* LEGACY_HANDLE_ALLOCATOR */ + #endif /* _MEMLIB_H */ diff --git a/sc2/src/sc2code/libs/memory/w_memlib.c b/sc2/src/sc2code/libs/memory/w_memlib.c index 59c1d55c6..071019ae0 100644 --- a/sc2/src/sc2code/libs/memory/w_memlib.c +++ b/sc2/src/sc2code/libs/memory/w_memlib.c @@ -25,11 +25,15 @@ //#include "utils.h" //#include "pcwin.h" #include "compiler.h" +#ifdef LEGACY_HANDLE_ALLOCATOR #include "libs/threadlib.h" +#endif #include "libs/memlib.h" #include "libs/log.h" #include "libs/misc.h" +#ifdef LEGACY_HANDLE_ALLOCATOR + #define GetToolFrame() 1 //#define MEM_DEBUG @@ -643,3 +647,71 @@ HRealloc (void *p, int size) return (np); } +#else /* !LEGACY_HANDLE_ALLOCATOR */ + +BOOLEAN +mem_init (void) +{ + return TRUE; +} + +BOOLEAN +mem_uninit(void) +{ + return (TRUE); +} + +void * +HMalloc (int size) +{ + void *p; + + if (size == 0) return NULL; + + if (size < 0) + { + log_add (log_Fatal, "Fatal Error: Request for negative amount of memory %d!", size); + fflush (stderr); + explode (); + } + + if ((p = malloc (size)) == NULL) { + log_add (log_Fatal, "Fatal Error: HMalloc(): out of memory."); + fflush (stderr); + explode (); + } + return (p); +} + +void +HFree (void *p) +{ + if (p) + { + free (p); + } +} + +void * +HCalloc (int size) +{ + void *p; + + p = HMalloc (size); + if (p) + memset (p, 0, size); + + return (p); +} + +void * +HRealloc (void *p, int size) +{ + void *np; + + np = realloc (p, size); + + return (np); +} + +#endif /* LEGACY_HANDLE_ALLOCATOR */