X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fposition.cpp;h=4184e494c924d198156d1e1b06415d5442f970ff;hp=5f19403035313eddc8e7694c4f9ce52f9bdc60d6;hb=9144e48eb63587bde7379c16ddb3defea4b0e409;hpb=aabd526f7c9cec1d1f6a8f7da738311487aa42b8 diff --git a/src/position.cpp b/src/position.cpp index 5f194030..4184e494 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -460,7 +460,9 @@ void Position::find_checkers() { bool Position::pl_move_is_legal(Move m) const { - return pl_move_is_legal(m, pinned_pieces(side_to_move())); + // If we're in check, all pseudo-legal moves are legal, because our + // check evasion generator only generates true legal moves. + return is_check() || pl_move_is_legal(m, pinned_pieces(side_to_move())); } bool Position::pl_move_is_legal(Move m, Bitboard pinned) const { @@ -468,11 +470,7 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const { assert(is_ok()); assert(move_is_ok(m)); assert(pinned == pinned_pieces(side_to_move())); - - // If we're in check, all pseudo-legal moves are legal, because our - // check evasion generator only generates true legal moves. - if (is_check()) - return true; + assert(!is_check()); // Castling moves are checked for legality during move generation. if (move_is_castle(m))