# HG changeset patch # User Mike Becker # Date 1785238639 -7200 # Node ID 52d452d0e7bf469f33d672a85fa4d7eca94631de # Parent 07cbfc477b225bc04ed53cb805e7a07d5286cb97 gamestate_cleanup() is now safe to be called multiple times fixes #950 diff -r 07cbfc477b22 -r 52d452d0e7bf src/chess/rules.c --- a/src/chess/rules.c Tue Jul 28 12:58:49 2026 +0200 +++ b/src/chess/rules.c Tue Jul 28 13:37:19 2026 +0200 @@ -62,12 +62,19 @@ } void gamestate_cleanup(GameState *gamestate) { + if (gamestate == NULL) return; + free(gamestate->moves); + gamestate->moves = NULL; free(gamestate->fen_start); - for (unsigned i = 0 ; i < gamestate->movecount ; i++) { - free(gamestate->fen[i]); + gamestate->fen_start = NULL; + if (gamestate->fen) { + for (unsigned i = 0 ; i < gamestate->movecount ; i++) { + free(gamestate->fen[i]); + } + free(gamestate->fen); + gamestate->fen = NULL; } - free(gamestate->fen); gamestate->movecount = gamestate->movecapacity = 0; }