|  | @@ -320,21 +320,49 @@ typedef int SOCKET;
 | 
	
		
			
				|  |  |  #define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void * mg_malloc(size_t size) {
 | 
	
		
			
				|  |  | +    void * data = malloc(size);
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +    char mallocStr[256];
 | 
	
		
			
				|  |  | +    sprintf(mallocStr, "malloc(%u) -> %p\n", size, data);
 | 
	
		
			
				|  |  | +    OutputDebugStringA(mallocStr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      return malloc(size);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void * mg_calloc(size_t count, size_t size) {
 | 
	
		
			
				|  |  | -    return calloc(count, size);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void * mg_realloc(void * memory, size_t newsize) {
 | 
	
		
			
				|  |  | -    return realloc(memory, newsize);
 | 
	
		
			
				|  |  | +    void * data = mg_malloc(size);
 | 
	
		
			
				|  |  | +    if (data) memset(data, 0, size);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return data;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void mg_free(void * memory) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    char mallocStr[256];
 | 
	
		
			
				|  |  | +    sprintf(mallocStr, "free(%p)\n", memory);
 | 
	
		
			
				|  |  | +    OutputDebugStringA(mallocStr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      free(memory);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +void * mg_realloc(void * memory, size_t newsize) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    void * data;
 | 
	
		
			
				|  |  | +    if (newsize) {
 | 
	
		
			
				|  |  | +        data = mg_malloc(newsize);
 | 
	
		
			
				|  |  | +        if ((data!=NULL) && (memory!=NULL)) {
 | 
	
		
			
				|  |  | +            memcpy(data, memory, newsize);
 | 
	
		
			
				|  |  | +            mg_free(memory);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +        data = 0;
 | 
	
		
			
				|  |  | +        mg_free(memory);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    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
 |