]> git.sesse.net Git - stockfish/blobdiff - src/position.cpp
Stricter condition to check for dc candidates
[stockfish] / src / position.cpp
index ec54da9e9e3161b382120acfaadfe7c9866129fd..006309ea0e1251ec405f0bec2ccf2bc024c631d2 100644 (file)
@@ -725,16 +725,14 @@ void Position::update_hidden_checks(Square from, Square to) {
   if (   (moveSquares & RookPseudoAttacks[ksq])   && (checkerCaptured || (rooks_and_queens(them)   & RookPseudoAttacks[ksq]))
       || (moveSquares & BishopPseudoAttacks[ksq]) && (checkerCaptured || (bishops_and_queens(them) & BishopPseudoAttacks[ksq])))
   {
+      find_hidden_checks(them, Pinned);
 
       // If we don't have opponent dc candidates and we are moving in the
-      // attack line then won't be dc candidates also after the move.
+      // attack line then won't be any dc candidates also after the move.
       if (   st->dcCandidates[them]
-          || bit_is_set(RookPseudoAttacks[ksq], from)
-          || bit_is_set(BishopPseudoAttacks[ksq], from))
-
-          find_hidden_checks(them, Pinned | DcCandidates);
-      else
-          find_hidden_checks(them, Pinned);
+          || (bit_is_set(RookPseudoAttacks[ksq], from) && (rooks_and_queens(them) & RookPseudoAttacks[ksq]))
+          || (bit_is_set(BishopPseudoAttacks[ksq], from) && (bishops_and_queens(them) & BishopPseudoAttacks[ksq])))
+          find_hidden_checks(them, DcCandidates);
   }
 }