aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2023-02-20 14:50:22 +0000
committerBen Harris <bjh21@bjh21.me.uk>2023-02-20 14:58:05 +0000
commit4e09175fdaaffc0483fc9bf767311268794d956c (patch)
tree89b0ffec23fbcb9c6fbddee3e452c1de3fbb34c1
parent1235f05af70c3acea7eedb0cbfd726ab4ec357c4 (diff)
downloadpuzzles-4e09175fdaaffc0483fc9bf767311268794d956c.zip
puzzles-4e09175fdaaffc0483fc9bf767311268794d956c.tar.gz
puzzles-4e09175fdaaffc0483fc9bf767311268794d956c.tar.bz2
puzzles-4e09175fdaaffc0483fc9bf767311268794d956c.tar.xz
Fix memory leak in midend_game_id_int()
The "par" string wasn't getting freed on some error paths. Fixed by freeing it immediately after its last use, which is before any of the error paths.
-rw-r--r--midend.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/midend.c b/midend.c
index e71c27e..f566251 100644
--- a/midend.c
+++ b/midend.c
@@ -1801,6 +1801,7 @@ static const char *midend_game_id_int(midend *me, const char *id, int defmode)
newcurparams = me->ourgame->default_params();
}
me->ourgame->decode_params(newcurparams, par);
+ sfree(par);
error = me->ourgame->validate_params(newcurparams, desc == NULL);
if (error) {
me->ourgame->free_params(newcurparams);
@@ -1876,8 +1877,6 @@ static const char *midend_game_id_int(midend *me, const char *id, int defmode)
me->genmode = GOT_SEED;
}
- sfree(par);
-
me->newgame_can_store_undo = false;
return NULL;