]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Extract a reliable PV line
[stockfish] / src / search.cpp
index aa63fcb4392d2fbe839b91b2c3bdfc1e764dd69d..6a4e352f279f95b242d14cee95a23a303bc2bce7 100644 (file)
@@ -1401,6 +1401,7 @@ void RootMove::extract_pv_from_tt(Position& pos) {
   const TTEntry* tte;
   int ply = 0;
   Move m = pv[0];
+  Value expectedScore = score;
 
   pv.clear();
 
@@ -1411,8 +1412,10 @@ void RootMove::extract_pv_from_tt(Position& pos) {
 
       pos.do_move(pv[ply++], *st++);
       tte = TT.probe(pos.key());
+      expectedScore = -expectedScore;
 
   } while (   tte
+           && expectedScore == value_from_tt(tte->value(), ply)
            && pos.pseudo_legal(m = tte->move()) // Local copy, TT could change
            && pos.legal(m, pos.pinned_pieces(pos.side_to_move()))
            && ply < MAX_PLY