--- 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; }