mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -07:00
I found a slightly odd-looking line of code in this file a few days
ago, and nearly changed it to the obvious thing. After some thought, though, I've decided the `bug' is better off unfixed, and added a comment explaining why. [originally from svn r6293]
This commit is contained in:
16
midend.c
16
midend.c
@ -356,8 +356,24 @@ void midend_new_game(midend *me)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ensure(me);
|
ensure(me);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* It might seem a bit odd that we're using me->params to
|
||||||
|
* create the initial game state, rather than me->curparams
|
||||||
|
* which is better tailored to this specific game and which we
|
||||||
|
* always know.
|
||||||
|
*
|
||||||
|
* It's supposed to be an invariant in the midend that
|
||||||
|
* me->params and me->curparams differ in no aspect that is
|
||||||
|
* important after generation (i.e. after new_desc()). By
|
||||||
|
* deliberately passing the _less_ specific of these two
|
||||||
|
* parameter sets, we provoke play-time misbehaviour in the
|
||||||
|
* case where a game has failed to encode a play-time parameter
|
||||||
|
* in the non-full version of encode_params().
|
||||||
|
*/
|
||||||
me->states[me->nstates].state =
|
me->states[me->nstates].state =
|
||||||
me->ourgame->new_game(me, me->params, me->desc);
|
me->ourgame->new_game(me, me->params, me->desc);
|
||||||
|
|
||||||
me->states[me->nstates].movestr = NULL;
|
me->states[me->nstates].movestr = NULL;
|
||||||
me->states[me->nstates].movetype = NEWGAME;
|
me->states[me->nstates].movetype = NEWGAME;
|
||||||
me->nstates++;
|
me->nstates++;
|
||||||
|
Reference in New Issue
Block a user