]> git.sesse.net Git - stockfish/blobdiff - src/position.cpp
Document index[] and pieceList[] are not invariants
[stockfish] / src / position.cpp
index 2b50ff2ae258df7a49eb0d892b79511d41e31908..c673225737b2906d428743b8a6f034d60d75d1c9 100644 (file)
@@ -939,6 +939,12 @@ void Position::do_capture_move(Bitboard& key, PieceType capture, Color them, Squ
     pieceCount[them][capture]--;
 
     // Update piece list, move the last piece at index[capsq] position
+    //
+    // WARNING: this is a not perfectly revresible operation. When we
+    // will reinsert the captured piece in undo_move() we will put it
+    // at the end of the list and not in its original place, it means
+    // index[] and pieceList[] are not guaranteed to be invariant to a
+    // do_move() + undo_move() sequence.
     Square lastPieceSquare = pieceList[them][capture][pieceCount[them][capture]];
     index[lastPieceSquare] = index[capsq];
     pieceList[them][capture][index[lastPieceSquare]] = lastPieceSquare;