From 4e09175fdaaffc0483fc9bf767311268794d956c Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Mon, 20 Feb 2023 14:50:22 +0000 Subject: [PATCH] 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. --- midend.c | 3 +-- 1 file changed, 1 insertion(+), 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;