Fix castling rights for passing moves
authorFabian Fichter <ianfab@users.noreply.github.com>
Sat, 13 Nov 2021 12:15:07 +0000 (13:15 +0100)
committerFabian Fichter <ianfab@users.noreply.github.com>
Sat, 13 Nov 2021 12:16:04 +0000 (13:16 +0100)
src/position.cpp

index 3a06a42..239d961 100644 (file)
@@ -1475,7 +1475,7 @@ void Position::do_move(Move m, StateInfo& newSt, bool givesCheck) {
   }
 
   // Update castling rights if needed
-  if (type_of(m) != DROP && st->castlingRights && (castlingRightsMask[from] | castlingRightsMask[to]))
+  if (type_of(m) != DROP && !is_pass(m) && st->castlingRights && (castlingRightsMask[from] | castlingRightsMask[to]))
   {
       k ^= Zobrist::castling[st->castlingRights];
       st->castlingRights &= ~(castlingRightsMask[from] | castlingRightsMask[to]);