]> git.sesse.net Git - stockfish/blobdiff - src/movegen.cpp
Fixed a bug in PV extraction from the transposition table: The
[stockfish] / src / movegen.cpp
index 079918e96279ddaab10a35ac4e533c87e0180cf1..eb65e7b9f18977dc1bcb9f730aab1e175ced4d61 100644 (file)
@@ -567,6 +567,29 @@ bool move_is_legal(const Position& pos, const Move m, Bitboard pinned) {
 }
 
 
+/// Another version of move_is_legal(), which takes only a position and a move
+/// as input. This function does not require that the side to move is not in
+/// check. It is not optimized for speed, and is only used for verifying move
+/// legality when building a PV from the transposition table.
+
+bool move_is_legal(const Position& pos, const Move m) {
+
+  Bitboard pinned = pos.pinned_pieces(pos.side_to_move());
+  if (!pos.is_check())
+      return move_is_legal(pos, m, pinned);
+  else
+  {
+      Position p(pos);
+      MoveStack moves[64];
+      int n = generate_evasions(p, moves, pinned);
+      for (int i = 0; i < n; i++)
+          if (moves[i].move == m)
+              return true;
+      return false;
+  }
+}
+
+
 namespace {
 
   template<PieceType Piece>