From 70939a7a3dc75faf77ab0d1d7e3c967d8c1f6927 Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Sun, 25 Apr 2021 21:08:12 +0100 Subject: [PATCH] Set "allocated" flag to off if setting a string from PossibleValue afterwards, or if not setting a new value at all. --- src/command.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/command.c b/src/command.c index 58434ef89..f1bf7dfb5 100644 --- a/src/command.c +++ b/src/command.c @@ -1433,6 +1433,7 @@ static void Setvalue(consvar_t *var, const char *valstr, boolean stealth) if (var->revert.allocated) { Z_Free(var->revert.v.string); + var->revert.allocated = false; // the below value is not allocated in zone memory, don't try to free it! } var->revert.v.const_munge = var->PossibleValue[i].strvalue; @@ -1505,6 +1506,7 @@ found: if (var->revert.allocated) { Z_Free(var->revert.v.string); + var->revert.allocated = false; // the below value is not allocated in zone memory, don't try to free it! } var->revert.v.const_munge = var->PossibleValue[i].strvalue; @@ -1523,6 +1525,7 @@ found: if (var->revert.allocated) { Z_Free(var->revert.v.string); + // Z_StrDup creates a new zone memory block, so we can keep the allocated flag on } var->revert.v.string = Z_StrDup(valstr); @@ -1787,6 +1790,7 @@ void CV_RevertNetVars(void) if (cvar->revert.allocated) { Z_Free(cvar->revert.v.string); + cvar->revert.allocated = false; // no value being held now } cvar->revert.v.string = NULL;