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