Consider king checks
authorFabian Fichter <ianfab@users.noreply.github.com>
Tue, 29 Mar 2022 17:40:55 +0000 (19:40 +0200)
committerFabian Fichter <ianfab@users.noreply.github.com>
Sat, 2 Apr 2022 09:11:11 +0000 (11:11 +0200)
Affects bench due to pseudo-legal but illegal checks by kings.

bench: 6180480

Closes #451.

src/position.cpp

index 64ad96a..96b4dfb 100644 (file)
@@ -536,7 +536,6 @@ void Position::set_check_info(StateInfo* si) const {
       if (AttackRiderTypes[pt] & NON_SLIDING_RIDERS)
           si->nonSlidingRiders |= pieces(pt);
   }
-  si->checkSquares[KING]   = 0;
   si->shak = si->checkersBB & (byTypeBB[KNIGHT] | byTypeBB[ROOK] | byTypeBB[BERS]);
   si->bikjang = var->bikjangRule && ksq != SQ_NONE ? bool(attacks_bb(sideToMove, ROOK, ksq, pieces()) & pieces(sideToMove, KING)) : false;
   si->legalCapture = NO_VALUE;
@@ -1250,7 +1249,7 @@ bool Position::gives_check(Move m) const {
       return false;
 
   // Is there a direct check?
-  if (type_of(m) != PROMOTION && type_of(m) != PIECE_PROMOTION && type_of(m) != PIECE_DEMOTION)
+  if (type_of(m) != PROMOTION && type_of(m) != PIECE_PROMOTION && type_of(m) != PIECE_DEMOTION && type_of(m) != CASTLING)
   {
       PieceType pt = type_of(moved_piece(m));
       if (AttackRiderTypes[pt] & (HOPPING_RIDERS | ASYMMETRICAL_RIDERS))