In non-PV IID don't call evaluate when in check
authorMarco Costalba <mcostalba@gmail.com>
Tue, 15 Dec 2009 11:07:23 +0000 (12:07 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Tue, 15 Dec 2009 11:07:23 +0000 (12:07 +0100)
Was a long standing hidden bug from Glaurung times,
triggered only now that we enable IID at non PV nodes.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>

src/search.cpp

index f7a3994..4481cfc 100644 (file)
@@ -1435,7 +1435,7 @@ namespace {
 
     // Go with internal iterative deepening if we don't have a TT move
     if (UseIIDAtNonPVNodes && ttMove == MOVE_NONE && depth >= 8*OnePly &&
-        evaluate(pos, ei, threadID) >= beta - IIDMargin)
+        !isCheck && evaluate(pos, ei, threadID) >= beta - IIDMargin)
     {
         search(pos, ss, beta, Min(depth/2, depth-2*OnePly), ply, false, threadID);
         ttMove = ss[ply].pv[ply];