diff --git a/Source/diablo.cpp b/Source/diablo.cpp index a0d716f55..7c2f6a7bb 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -66,25 +66,13 @@ char *spszMsgKeyTbl[4] = { "F9", "F10", "F11", "F12" }; // weak void __cdecl FreeGameMem() { - void *p; - music_stop(); - p = pDungeonCels; /* todo: macro */ - pDungeonCels = NULL; - mem_free_dbg(p); - p = pMegaTiles; - pMegaTiles = NULL; - mem_free_dbg(p); - p = pLevelPieces; - pLevelPieces = NULL; - mem_free_dbg(p); - p = level_special_cel; - level_special_cel = NULL; - mem_free_dbg(p); - p = pSpeedCels; - pSpeedCels = NULL; - mem_free_dbg(p); + MemFreeDbg(pDungeonCels); + MemFreeDbg(pMegaTiles); + MemFreeDbg(pLevelPieces); + MemFreeDbg(level_special_cel); + MemFreeDbg(pSpeedCels); FreeMissiles(); FreeMonsters(); diff --git a/defs.h b/defs.h index a74c5ce83..1afa50386 100644 --- a/defs.h +++ b/defs.h @@ -85,6 +85,14 @@ #define SCREENXY(x, y) ((x) + 64 + (((y) + 160) * 768)) +#define MemFreeDbg(p) \ +{ \ + void *p__p; \ + p__p = p; \ + p = NULL; \ + mem_free_dbg(p__p); \ +} + #ifndef INVALID_FILE_ATTRIBUTES #define INVALID_FILE_ATTRIBUTES ((DWORD)-1) #endif