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.
Diffstat (limited to '')
-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;