int min, max;
int rx, ry;
+ /*
+ * We can't set the size on the same drawstate twice. So if
+ * we've already sized one drawstate, we must throw it away and
+ * create a new one.
+ */
+ if (me->drawstate && me->tilesize > 0) {
+ me->ourgame->free_drawstate(me->drawing, me->drawstate);
+ me->drawstate = me->ourgame->new_drawstate(me->drawing,
+ me->states[0].state);
+ }
+
/*
* Find the tile size that best fits within the given space. If
* `expand' is TRUE, we must actually find the _largest_ such
* Now enter the solved state as the next move.
*/
midend_stop_anim(me);
- while (me->nstates > me->statepos)
+ 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);
+ }
ensure(me);
me->states[me->nstates].state = s;
me->states[me->nstates].movestr = movestr;