From: Marco Costalba Date: Thu, 15 Dec 2011 06:25:45 +0000 (+0100) Subject: Fix book move with searchmoves compatibility X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=1ae6ae9b60ab9489bfd986bd811c1ec6d0331870 Fix book move with searchmoves compatibility 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 --- diff --git a/src/search.cpp b/src/search.cpp index ef247420..4a4e058f 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -328,13 +328,12 @@ void Search::think() { book.open(Options["Book File"].value()); Move bookMove = book.probe(pos, Options["Best Book Move"].value()); - 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; } } @@ -404,6 +403,8 @@ void Search::think() { pos.undo_move(RootMoves[0].pv[0]); } +finish: + // 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.