Partial revert of "Assorted trivial cleanups 5/2019".
authorsyzygy1 <3028851+syzygy1@users.noreply.github.com>
Tue, 18 Jun 2019 21:27:34 +0000 (23:27 +0200)
committerStephane Nicolet <cassio@free.fr>
Thu, 20 Jun 2019 14:09:40 +0000 (16:09 +0200)
Since root_probe() and root_probe_wdl() do not reset all tbRank values if they fail,
it is necessary to do this in rank_root_move(). This fixes issue #2196.
Alternatively, the loop could be moved into both root_probe() and root_probe_wdl().

No functional change

src/search.cpp

index d954389..047a089 100644 (file)
@@ -1713,4 +1713,10 @@ void Tablebases::rank_root_moves(Position& pos, Search::RootMoves& rootMoves) {
         if (dtz_available || rootMoves[0].tbScore <= VALUE_DRAW)
             Cardinality = 0;
     }
+    else
+    {
+        // Clean up if root_probe() and root_probe_wdl() have failed
+        for (auto& m : rootMoves)
+            m.tbRank = 0;
+    }
 }