Fix out-of-bound array access printing ponder move
authorGary Linscott <glinscott@gmail.com>
Mon, 24 Nov 2014 00:53:00 +0000 (08:53 +0800)
committerGary Linscott <glinscott@gmail.com>
Mon, 24 Nov 2014 00:53:00 +0000 (08:53 +0800)
It is possible that we won't have a ponder move if our PV
is too short.  In that case, just don't print a ponder move.

No functional change

Resolves #130

src/search.cpp

index 9f27862..11ba939 100644 (file)
@@ -217,9 +217,12 @@ void Search::think() {
       RootPos.this_thread()->wait_for(Signals.stop);
   }
 
-  sync_cout << "bestmove " << UCI::format_move(RootMoves[0].pv[0], RootPos.is_chess960())
-            << " ponder "  << UCI::format_move(RootMoves[0].pv[1], RootPos.is_chess960())
-            << sync_endl;
+  sync_cout << "bestmove " << UCI::format_move(RootMoves[0].pv[0], RootPos.is_chess960());
+
+  if (RootMoves[0].pv.size() > 1)
+      std::cout << " ponder " << UCI::format_move(RootMoves[0].pv[1], RootPos.is_chess960());
+
+  std::cout << sync_endl;
 }