From 0b2bbd558db3c8a7ac8ad636cf13b32014502c0b Mon Sep 17 00:00:00 2001 From: simon Date: Mon, 12 Sep 2005 12:38:58 +0000 Subject: [PATCH] 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. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@6293 cda61777-01e9-0310-a592-d414129be87e --- midend.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/midend.c b/midend.c index cc360b5..833cbef 100644 --- a/midend.c +++ b/midend.c @@ -356,8 +356,24 @@ void midend_new_game(midend *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->ourgame->new_game(me, me->params, me->desc); + me->states[me->nstates].movestr = NULL; me->states[me->nstates].movetype = NEWGAME; me->nstates++; -- 2.11.0