From 92b2f1565bbd461a244026f3d50f53c03fd0e66a Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Sun, 3 Nov 2019 09:57:12 +0100 Subject: [PATCH] Fix quiet check move generation Do not generate quiet checks outside of board in quiescence search. Closes #45. --- src/movegen.cpp | 4 ++-- src/position.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/movegen.cpp b/src/movegen.cpp index 756aeed..d303842 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -435,8 +435,8 @@ ExtMove* generate(const Position& pos, ExtMove* moveList) { moveList = make_move_and_gating(pos, moveList, us, from, pop_lsb(&b)); } - return us == WHITE ? generate_all(pos, moveList, ~pos.pieces()) - : generate_all(pos, moveList, ~pos.pieces()); + return us == WHITE ? generate_all(pos, moveList, ~pos.pieces() & pos.board_bb()) + : generate_all(pos, moveList, ~pos.pieces() & pos.board_bb()); } diff --git a/src/position.cpp b/src/position.cpp index 36565d8..b3ce0c4 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -781,6 +781,7 @@ bool Position::legal(Move m) const { assert(color_of(moved_piece(m)) == us); assert(!count(us) || piece_on(square(us)) == make_piece(us, KING)); + assert(board_bb() & to); // Illegal checks if ((!checking_permitted() || (sittuyin_promotion() && type_of(m) == PROMOTION)) && gives_check(m)) -- 1.7.0.4