X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=94b34389178f0f18119d010bea23c8bdebf3d06e;hp=829e1bbef9bb3155048e72d65e424b8ba7c2eb87;hb=a1f9bf19d9aa542fd5109a4ce997eac8122568d4;hpb=fbdabe2975c0e86a04b01c36c9f3eec5494ecf0d diff --git a/src/search.cpp b/src/search.cpp index 829e1bbe..94b34389 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; @@ -2025,7 +2023,7 @@ split_point_start: // At split points actual search starts from here while ( (tte = TT.probe(pos.get_key())) != NULL && tte->move() != MOVE_NONE && pos.move_is_pl(tte->move()) - && pos.pl_move_is_legal(tte->move(), pos.pinned_pieces(pos.side_to_move())) + && pos.pl_move_is_legal(tte->move(), pos.pinned_pieces()) && ply < PLY_MAX && (!pos.is_draw() || ply < 2)) {