Small change to "ponderhit" handling
authorMarco Costalba <mcostalba@gmail.com>
Sun, 13 Jan 2013 13:28:22 +0000 (14:28 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 13 Jan 2013 13:32:30 +0000 (14:32 +0100)
Reset Limits.ponder only if search continue, but if
we are going to stop the search there is no need
(and is also confusing) to clear the 'ponder' flag.

This mimics the behaviour upon rceiving 'stop' when
pondering.

No functional change.

src/uci.cpp

index 49a0b22fd6723a89bbbc87174240dc0a125be197..ddaad41725aae83c8161549199649990ca719c68 100644 (file)
@@ -73,16 +73,18 @@ void UCI::loop(const string& args) {
       }
       else if (token == "ponderhit")
       {
-          // The opponent has played the expected move. GUI sends "ponderhit" if
-          // we were told to ponder on the same move the opponent has played. We
-          // should continue searching but switching from pondering to normal search.
-          Search::Limits.ponder = false;
-
+          // GUI sends "ponderhit" if we were told to ponder on the same move the
+          // opponent has played. In case Signals.stopOnPonderhit is set we are
+          // waiting for "ponderhit" to stop the search (for instance because we
+          // already ran out of time), otherwise we should continue searching but
+          // switching from pondering to normal search.
           if (Search::Signals.stopOnPonderhit)
           {
               Search::Signals.stop = true;
               Threads.main_thread()->wake_up(); // Could be sleeping
           }
+          else
+              Search::Limits.ponder = false;
       }
       else if (token == "perft" && (is >> token)) // Read perft depth
       {