|  | @@ -319,6 +319,7 @@ typedef int SOCKET;
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  #define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#if defined(MEMORY_DEBUGGING) || 0
 | 
	
		
			
				|  |  |  static unsigned long totalMemUsed = 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void * mg_malloc_ex(size_t size, const char * file, unsigned line) {
 | 
	
	
		
			
				|  | @@ -332,7 +333,7 @@ static void * mg_malloc_ex(size_t size, const char * file, unsigned line) {
 | 
	
		
			
				|  |  |          totalMemUsed += size;
 | 
	
		
			
				|  |  |          memory = (void *)(((char*)data)+sizeof(size_t));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    sprintf(mallocStr, "malloc(%u) -> %p (%u)  --- %s:%u\n", size, memory, totalMemUsed, file, line);
 | 
	
		
			
				|  |  | +    sprintf(mallocStr, "MEM: %p %5u alloc %7u  --- %s:%u\n", memory, size, totalMemUsed, file, line);
 | 
	
		
			
				|  |  |      OutputDebugStringA(mallocStr);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return memory;
 | 
	
	
		
			
				|  | @@ -354,7 +355,7 @@ static void mg_free_ex(void * memory, const char * file, unsigned line) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (memory) {
 | 
	
		
			
				|  |  |          totalMemUsed -= size;
 | 
	
		
			
				|  |  | -        sprintf(mallocStr, "free(%p) (%u, %u)  --- %s:%u\n", memory, size, totalMemUsed, file, line);
 | 
	
		
			
				|  |  | +        sprintf(mallocStr, "MEM: %p %5u free  %7u  --- %s:%u\n", memory, size, totalMemUsed, file, line);
 | 
	
		
			
				|  |  |          OutputDebugStringA(mallocStr);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          free(data);
 | 
	
	
		
			
				|  | @@ -378,16 +379,23 @@ static void * mg_realloc_ex(void * memory, size_t newsize, const char * file, un
 | 
	
		
			
				|  |  |      return data;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#define malloc  DO_NOT_USE_THIS_FUNCTION__USE_mg_malloc
 | 
	
		
			
				|  |  | -#define calloc  DO_NOT_USE_THIS_FUNCTION__USE_mg_calloc
 | 
	
		
			
				|  |  | -#define realloc DO_NOT_USE_THIS_FUNCTION__USE_mg_realloc
 | 
	
		
			
				|  |  | -#define free    DO_NOT_USE_THIS_FUNCTION__USE_mg_free
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  #define mg_malloc(a)      mg_malloc_ex(a, __FILE__, __LINE__)
 | 
	
		
			
				|  |  |  #define mg_calloc(a,b)    mg_calloc_ex(a, b, __FILE__, __LINE__)
 | 
	
		
			
				|  |  |  #define mg_realloc(a, b)  mg_realloc_ex(a, b, __FILE__, __LINE__)
 | 
	
		
			
				|  |  |  #define mg_free(a)        mg_free_ex(a, __FILE__, __LINE__)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +__inline void * mg_malloc(size_t a)             {return malloc(a);}
 | 
	
		
			
				|  |  | +__inline void * mg_calloc(size_t a, size_t b)   {return calloc(a, b);}
 | 
	
		
			
				|  |  | +__inline void * mg_realloc(void * a, size_t b)  {return realloc(a, b);}
 | 
	
		
			
				|  |  | +__inline void   mg_free(void * a)               {free(a);}
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define malloc  DO_NOT_USE_THIS_FUNCTION__USE_mg_malloc
 | 
	
		
			
				|  |  | +#define calloc  DO_NOT_USE_THIS_FUNCTION__USE_mg_calloc
 | 
	
		
			
				|  |  | +#define realloc DO_NOT_USE_THIS_FUNCTION__USE_mg_realloc
 | 
	
		
			
				|  |  | +#define free    DO_NOT_USE_THIS_FUNCTION__USE_mg_free
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #ifdef _WIN32
 | 
	
		
			
				|  |  |  static CRITICAL_SECTION global_log_file_lock;
 | 
	
		
			
				|  |  |  static DWORD pthread_self(void)
 |