Don't reset 50-move counter after castling
authorMarco Costalba <mcostalba@gmail.com>
Sun, 12 Feb 2012 08:59:19 +0000 (09:59 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 12 Feb 2012 09:07:10 +0000 (10:07 +0100)
Rule says should be reset only after a capture and/or
a pawn move.

This incredible bug was here since Glaurung times !

Spotted by Kiriakos.

No functional change in the test bench because we
don't reach the 50 moves limits.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/position.cpp

index 5ee0107f4252ec59f7dedbbea6ab85aa60e07292..f50677bb7e612c8536883ff9037bcecc437d81a1 100644 (file)
@@ -752,7 +752,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI
   k ^= zobSideToMove;
 
   // Increment the 50 moves rule draw counter. Resetting it to zero in the
-  // case of non-reversible moves is taken care of later.
+  // case of a capture or a pawn move is taken care of later.
   st->rule50++;
   st->pliesFromNull++;
 
@@ -1155,9 +1155,6 @@ void Position::do_castle_move(Move m) {
       st->castleRights &= castleRightsMask[kfrom];
       st->key ^= zobCastle[st->castleRights];
 
-      // Reset rule 50 counter
-      st->rule50 = 0;
-
       // Update checkers BB
       st->checkersBB = attackers_to(king_square(~us)) & pieces(us);