X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=8b5f3b2b6d8c6171575a31f1cb3e3afcfe8327f3;hp=829e1bbef9bb3155048e72d65e424b8ba7c2eb87;hb=4894231ff71b4132ce77cac7e01dc708bc93f426;hpb=fbdabe2975c0e86a04b01c36c9f3eec5494ecf0d diff --git a/src/search.cpp b/src/search.cpp index 829e1bbe..8b5f3b2b 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1549,6 +1549,7 @@ split_point_start: // At split points actual search starts from here Square f1, t1, f2, t2; Piece p1, p2; + Square ksq; assert(m1 && move_is_ok(m1)); assert(m2 && move_is_ok(m2)); @@ -1577,16 +1578,13 @@ split_point_start: // At split points actual search starts from here return true; // Case 5: Discovered check, checking piece is the piece moved in m1 + ksq = pos.king_square(pos.side_to_move()); if ( piece_is_slider(p1) - && bit_is_set(squares_between(t1, pos.king_square(pos.side_to_move())), f2) - && !bit_is_set(squares_between(t1, pos.king_square(pos.side_to_move())), t2)) + && bit_is_set(squares_between(t1, ksq), f2)) { - // discovered_check_candidates() works also if the Position's side to - // move is the opposite of the checking piece. - Color them = opposite_color(pos.side_to_move()); - Bitboard dcCandidates = pos.discovered_check_candidates(them); - - if (bit_is_set(dcCandidates, f2)) + Bitboard occ = pos.occupied_squares(); + clear_bit(&occ, f2); + if (bit_is_set(pos.attacks_from(p1, t1, occ), ksq)) return true; } return false;