src/chess/rules.c

changeset 158
52d452d0e7bf
parent 157
07cbfc477b22
equal deleted inserted replaced
157:07cbfc477b22 158:52d452d0e7bf
60 fen_compute(fen, gamestate); 60 fen_compute(fen, gamestate);
61 gamestate->fen_start = strdup(fen); 61 gamestate->fen_start = strdup(fen);
62 } 62 }
63 63
64 void gamestate_cleanup(GameState *gamestate) { 64 void gamestate_cleanup(GameState *gamestate) {
65 if (gamestate == NULL) return;
66
65 free(gamestate->moves); 67 free(gamestate->moves);
68 gamestate->moves = NULL;
66 free(gamestate->fen_start); 69 free(gamestate->fen_start);
67 for (unsigned i = 0 ; i < gamestate->movecount ; i++) { 70 gamestate->fen_start = NULL;
68 free(gamestate->fen[i]); 71 if (gamestate->fen) {
69 } 72 for (unsigned i = 0 ; i < gamestate->movecount ; i++) {
70 free(gamestate->fen); 73 free(gamestate->fen[i]);
74 }
75 free(gamestate->fen);
76 gamestate->fen = NULL;
77 }
71 gamestate->movecount = gamestate->movecapacity = 0; 78 gamestate->movecount = gamestate->movecapacity = 0;
72 } 79 }
73 80
74 static GameState gamestate_copy_sim(GameState *gamestate) { 81 static GameState gamestate_copy_sim(GameState *gamestate) {
75 GameState simulation = *gamestate; 82 GameState simulation = *gamestate;

mercurial