Fix a (bestValue == -VALUE_INFINITE) assert
authorMarco Costalba <mcostalba@gmail.com>
Tue, 18 Jan 2011 06:34:36 +0000 (07:34 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Tue, 18 Jan 2011 12:30:13 +0000 (13:30 +0100)
In case of a Root node we can leave with bestValue set
to -VALUE_INFINITE if search is stopped by the GUI and
stopReques flag is raised.

This patch fixes the issue.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/search.cpp

index 2adc2e0973e2d7778635f7fd03226a3ed55318db..95fab3f176a5ba01263a16091b257a6f73e54964 100644 (file)
@@ -802,7 +802,7 @@ namespace {
     }
     else if (Root)
         bestValue = alpha;
-    else {} // Hack to fix icc's "statement is unreachable" warning
+    else {} // Hack to fix icc's "statement is unreachable" warning FIXME
 
     // Step 1. Initialize node and poll. Polling can abort search
     ss->currentMove = ss->bestMove = threatMove = MOVE_NONE;
@@ -1233,6 +1233,10 @@ split_point_start: // At split points actual search starts from here
 
       if (Root)
       {
+          // To avoid to exit with bestValue == -VALUE_INFINITE
+          if (value > bestValue)
+              bestValue = value;
+
           // Finished searching the move. If StopRequest is true, the search
           // was aborted because the user interrupted the search or because we
           // ran out of time. In this case, the return value of the search cannot
@@ -1274,10 +1278,10 @@ split_point_start: // At split points actual search starts from here
               {
                   // Raise alpha to setup proper non-pv search upper bound
                   if (value > alpha)
-                      alpha = bestValue = value;
+                      alpha = value;
               }
               else // Set alpha equal to minimum score among the PV lines
-                  alpha = bestValue = Rml[Min(moveCount, MultiPV) - 1].pv_score; // FIXME why moveCount?
+                  alpha = Rml[Min(moveCount, MultiPV) - 1].pv_score; // FIXME why moveCount?
 
           } // PV move or new best move
       }