]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Fix a crash when reaching PLY_MAX in a check position
[stockfish] / src / search.cpp
index 6dd854c68689c6a5c16b767eeaa9686e89e3cf8b..c0b6507ce9ecddeffac44bc2bea2df64ed7d2de7 100644 (file)
@@ -471,11 +471,9 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move,
       NodesBetweenPolls = Min(MaxNodes, 30000);
       InfiniteSearch = true; // HACK
   }
-  else if (InfiniteSearch)
-      NodesBetweenPolls = 30000;
-  else if (myTime < 1000)
+  else if (myTime && myTime < 1000)
       NodesBetweenPolls = 1000;
-  else if (myTime < 5000)
+  else if (myTime && myTime < 5000)
       NodesBetweenPolls = 5000;
   else
       NodesBetweenPolls = 30000;
@@ -1050,7 +1048,7 @@ namespace {
     EvalInfo ei;
 
     if (ply >= PLY_MAX - 1)
-        return evaluate(pos, ei, threadID);
+        return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
 
     // Mate distance pruning
     Value oldAlpha = alpha;
@@ -1240,7 +1238,7 @@ namespace {
     EvalInfo ei;
 
     if (ply >= PLY_MAX - 1)
-        return evaluate(pos, ei, threadID);
+        return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
 
     // Mate distance pruning
     if (value_mated_in(ply) >= beta)
@@ -1531,8 +1529,8 @@ namespace {
     else
         staticValue = evaluate(pos, ei, threadID);
 
-    if (ply == PLY_MAX - 1)
-        return evaluate(pos, ei, threadID);
+    if (ply >= PLY_MAX - 1)
+        return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
 
     // Initialize "stand pat score", and return it immediately if it is
     // at least beta.