]> git.sesse.net Git - stockfish/commitdiff
Fixed incorrect material key update when making promotion moves.
authorTord Romstad <tord@glaurungchess.com>
Thu, 20 Aug 2009 14:54:20 +0000 (16:54 +0200)
committerTord Romstad <tord@glaurungchess.com>
Thu, 20 Aug 2009 14:54:20 +0000 (16:54 +0200)
src/position.cpp

index 025a2d722af3ab15a5a3b2cd57fdf1356474b55b..d37d35b4261fef1d8418f608e890d627c76e9c01 100644 (file)
@@ -829,6 +829,10 @@ void Position::do_move(Move m, StateInfo& newSt, Bitboard dcCandidates) {
       set_bit(&(byTypeBB[promotion]), to);
       board[to] = piece_of_color_and_type(us, promotion);
 
+      // Update material key
+      st->materialKey ^= zobMaterial[us][PAWN][pieceCount[us][PAWN]];
+      st->materialKey ^= zobMaterial[us][promotion][pieceCount[us][promotion]+1];
+
       // Update piece counts
       pieceCount[us][PAWN]--;
       pieceCount[us][promotion]++;
@@ -845,10 +849,6 @@ void Position::do_move(Move m, StateInfo& newSt, Bitboard dcCandidates) {
       key ^= zobrist[us][PAWN][to] ^ zobrist[us][promotion][to];
       st->pawnKey ^= zobrist[us][PAWN][to];
 
-      // Update material key
-      st->materialKey ^= zobMaterial[us][PAWN][pieceCount[us][PAWN]];
-      st->materialKey ^= zobMaterial[us][promotion][pieceCount[us][promotion]+1];
-
       // Partially revert and update incremental scores
       st->mgValue -= pst<MidGame>(us, PAWN, to);
       st->mgValue += pst<MidGame>(us, promotion, to);