Don't copy Position in pretty_pv()

Also let do_setup_move() don't reuse same StateInfo so that
we can remove the check about different StateInfo objects
before memcpy() in do_move.

Functional change due to harmless additionals
do_move() / undo_move() steps.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba
2011-01-09 11:22:59 +01:00
parent c89762288b
commit 15153a1de7
6 changed files with 30 additions and 36 deletions

View File

@@ -140,7 +140,7 @@ namespace {
void set_position(Position& pos, UCIParser& up) {
string token;
string fen, token;
if (!(up >> token) || (token != "startpos" && token != "fen"))
return;
@@ -148,34 +148,19 @@ namespace {
if (token == "startpos")
{
pos.from_fen(StartPositionFEN, false);
if (!(up >> token))
return;
up >> token; // Consume "moves" token
}
else // fen
{
string fen;
while (up >> token && token != "moves")
{
fen += token;
fen += ' ';
}
fen += token + string(" ");
pos.from_fen(fen, Options["UCI_Chess960"].value<bool>());
}
if (token != "moves")
return;
// Parse optional move list
Move move;
StateInfo st;
// Parse move list (if any)
while (up >> token)
{
move = move_from_uci(pos, token);
pos.do_setup_move(move, st);
}
// Our StateInfo st is about going out of scope so copy
// its content inside pos before it disappears.
pos.detach();
pos.do_setup_move(move_from_uci(pos, token));
}