Do not return the book move if is not among the
RootMoves,in particular if we have been asked to
search on a move subset with "searchmoves" then
return book move only if it is among this subset.
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
book.open(Options["Book File"].value<string>());
Move bookMove = book.probe(pos, Options["Best Book Move"].value<bool>());
book.open(Options["Book File"].value<string>());
Move bookMove = book.probe(pos, Options["Best Book Move"].value<bool>());
- if (bookMove != MOVE_NONE)
- {
- if (!Signals.stop && (Limits.ponder || Limits.infinite))
- Threads.wait_for_stop_or_ponderhit();
- cout << "bestmove " << bookMove << endl;
- return;
+ if ( bookMove != MOVE_NONE
+ && std::count(RootMoves.begin(), RootMoves.end(), bookMove))
+ {
+ std::swap(RootMoves[0], *std::find(RootMoves.begin(), RootMoves.end(), bookMove));
+ goto finish;
pos.undo_move(RootMoves[0].pv[0]);
}
pos.undo_move(RootMoves[0].pv[0]);
}
// When we reach max depth we arrive here even without a StopRequest, but if
// we are pondering or in infinite search, we shouldn't print the best move
// before we are told to do so.
// When we reach max depth we arrive here even without a StopRequest, but if
// we are pondering or in infinite search, we shouldn't print the best move
// before we are told to do so.