Do not crash if we are asked to search mate or stalemate position.
authorJoona Kiiski <joona.kiiski@gmail.com>
Sat, 28 Nov 2009 18:49:36 +0000 (20:49 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 28 Nov 2009 20:41:57 +0000 (21:41 +0100)
We might be asked to ponder mate or stalemate position.
This being the case, simply wait for stop or ponderhit.
Currently we crash.

UCI specs aren't clear on the issue, but it cost nothing to
add little check.

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

index b86693289c8b2688070e74382a1b64c286528af2..4b93a210b59ed218c3d7081653e736801eb6f391 100644 (file)
@@ -677,6 +677,14 @@ namespace {
     // searchMoves are verified, copied, scored and sorted
     RootMoveList rml(p, searchMoves);
 
+    if (rml.move_count() == 0)
+    {
+        if (PonderSearch)
+            wait_for_stop_or_ponderhit();
+
+        return pos.is_check()? -VALUE_MATE : VALUE_DRAW;
+    }
+
     // Print RootMoveList c'tor startup scoring to the standard output,
     // so that we print information also for iteration 1.
     std::cout << "info depth " << 1 << "\ninfo depth " << 1