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 b866932..4b93a21 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