]> git.sesse.net Git - stockfish/blobdiff - src/position.cpp
Fix material key for King
[stockfish] / src / position.cpp
index 8f38493027b07e9f8c273ae95d73f046ea8026b3..72681e8d694e68d4c2f709dccf9a54b560aafa06 100644 (file)
@@ -1080,13 +1080,18 @@ int Position::see(Move m) const {
 
       // Locate and remove the next least valuable attacker
       captured = min_attacker<PAWN>(byTypeBB, to, stmAttackers, occupied, attackers);
-      stm = ~stm;
-      stmAttackers = attackers & pieces(stm);
 
       // Stop before processing a king capture
-      if (captured == KING && stmAttackers)
+      if (captured == KING)
+      {
+          if (stmAttackers == attackers)
+              ++slIndex;
+
           break;
+      }
 
+      stm = ~stm;
+      stmAttackers = attackers & pieces(stm);
       ++slIndex;
 
   } while (stmAttackers);
@@ -1171,7 +1176,7 @@ Key Position::compute_material_key() const {
   Key k = 0;
 
   for (Color c = WHITE; c <= BLACK; ++c)
-      for (PieceType pt = PAWN; pt <= QUEEN; ++pt)
+      for (PieceType pt = PAWN; pt <= KING; ++pt)
           for (int cnt = 0; cnt < pieceCount[c][pt]; ++cnt)
               k ^= Zobrist::psq[c][pt][cnt];