collection of game states, we should also free the move strings from
which they were constructed.
git-svn-id: svn://svn.tartarus.org/sgt/puzzles@8805
cda61777-01e9-0310-a592-
d414129be87e
+static void midend_purge_states(midend *me)
+{
+ while (me->nstates > me->statepos) {
+ me->ourgame->free_game(me->states[--me->nstates].state);
+ if (me->states[me->nstates].movestr)
+ sfree(me->states[me->nstates].movestr);
+ }
+}
+
static void midend_free_game(midend *me)
{
while (me->nstates > 0) {
static void midend_free_game(midend *me)
{
while (me->nstates > 0) {
* Now enter the restarted state as the next move.
*/
midend_stop_anim(me);
* Now enter the restarted state as the next move.
*/
midend_stop_anim(me);
- while (me->nstates > me->statepos)
- me->ourgame->free_game(me->states[--me->nstates].state);
+ midend_purge_states(me);
ensure(me);
me->states[me->nstates].state = s;
me->states[me->nstates].movestr = dupstr(me->desc);
ensure(me);
me->states[me->nstates].state = s;
me->states[me->nstates].movestr = dupstr(me->desc);
goto done;
} else if (s) {
midend_stop_anim(me);
goto done;
} else if (s) {
midend_stop_anim(me);
- while (me->nstates > me->statepos)
- me->ourgame->free_game(me->states[--me->nstates].state);
+ midend_purge_states(me);
ensure(me);
assert(movestr != NULL);
me->states[me->nstates].state = s;
ensure(me);
assert(movestr != NULL);
me->states[me->nstates].state = s;
* Now enter the solved state as the next move.
*/
midend_stop_anim(me);
* Now enter the solved state as the next move.
*/
midend_stop_anim(me);
- while (me->nstates > me->statepos) {
- me->ourgame->free_game(me->states[--me->nstates].state);
- if (me->states[me->nstates].movestr)
- sfree(me->states[me->nstates].movestr);
- }
+ midend_purge_states(me);
ensure(me);
me->states[me->nstates].state = s;
me->states[me->nstates].movestr = movestr;
ensure(me);
me->states[me->nstates].state = s;
me->states[me->nstates].movestr = movestr;