diff --git a/src/position.cpp b/src/position.cpp index 8f384930..6f874763 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -1080,13 +1080,18 @@ int Position::see(Move m) const { // Locate and remove the next least valuable attacker captured = min_attacker(byTypeBB, to, stmAttackers, occupied, attackers); - stm = ~stm; - stmAttackers = attackers & pieces(stm); // Stop before processing a king capture - if (captured == KING && stmAttackers) - break; + if (captured == KING) + { + if (stmAttackers == attackers) + ++slIndex; + break; + } + + stm = ~stm; + stmAttackers = attackers & pieces(stm); ++slIndex; } while (stmAttackers);