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:
Simon Tatham
2005-09-12 12:38:58 +00:00
parent f71630073f
commit f07576f49e

View File

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