From fdddbcfd82288afd26396cb05196b22aa575d7cd Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 14 Feb 2023 02:46:41 -0800 Subject: [PATCH] g_demo.c: ensure demobuf is always freed before use --- src/g_demo.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/g_demo.c b/src/g_demo.c index e95daa2b5..36a6f6c63 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -2015,7 +2015,10 @@ void G_RecordDemo(const char *name) // if (demobuf.buffer) // Z_Free(demobuf.buffer); + // FIXME: this file doesn't manage its memory and actually free this when it's done using it + Z_Free(demobuf.buffer); P_SaveBufferAlloc(&demobuf, maxsize); + Z_SetUser(demobuf.buffer, (void**)&demobuf.buffer); demobuf.p = NULL; demo.recording = true; @@ -2028,7 +2031,10 @@ void G_RecordMetal(void) if (M_CheckParm("-maxdemo") && M_IsNextParm()) maxsize = atoi(M_GetNextParm()) * 1024; + // FIXME: this file doesn't manage its memory and actually free this when it's done using it + Z_Free(demobuf.buffer); P_SaveBufferAlloc(&demobuf, maxsize); + Z_SetUser(demobuf.buffer, (void**)&demobuf.buffer); demobuf.p = NULL; metalrecording = true; @@ -3051,7 +3057,10 @@ void G_DoPlayDemo(char *defdemoname) return; } + // FIXME: this file doesn't manage its memory and actually free this when it's done using it + Z_Free(demobuf.buffer); P_SaveBufferAlloc(&demobuf, vLump->size); + Z_SetUser(demobuf.buffer, (void**)&demobuf.buffer); memcpy(demobuf.buffer, vLump->data, vLump->size); vres_Free(vRes);