Fixes a Chess960 bug when playing with more than one search thread.

The init_eval() function corrupted the static array castleRightsMask[]
in the Position class, resulting in instant crashes in most Chess960
games. Fixed by repairing the damage directly after the function is
called. Also modified the Position::to_fen() function to display
castle rights correctly for Chess960 positions, and added sanity checks
for uncastled rook files in Position::is_ok().
This commit is contained in:
Tord Romstad
2010-02-01 12:40:09 +01:00
committed by Marco Costalba
parent 43fa3a4d64
commit 290caf9960
2 changed files with 42 additions and 4 deletions
+4
View File
@@ -452,6 +452,10 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move,
{
ActiveThreads = newActiveThreads;
init_eval(ActiveThreads);
// HACK: init_eval() destroys the static castleRightsMask[] array in the
// Position class. The below line repairs the damage.
Position p(pos.to_fen());
assert(pos.is_ok());
}
// Wake up sleeping threads