mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Fix crash when passing a mate/stalemate position
Both Tablebases::filter_root_moves() and extract_ponder_from_tt(9 were unable to handle a mate/stalemate position. Spotted and reported by Dann Corbit. Added some mate/stalemate positions to bench so to early catch this regression in the future. No functional change.
This commit is contained in:
parent
28240d375c
commit
8662bdfa12
3 changed files with 13 additions and 2 deletions
|
@ -76,7 +76,14 @@ const vector<string> Defaults = {
|
|||
"8/8/3P3k/8/1p6/8/1P6/1K3n2 b - - 0 1", // Nd2 - draw
|
||||
|
||||
// 7-man positions
|
||||
"8/R7/2q5/8/6k1/8/1P5p/K6R w - - 0 124" // Draw
|
||||
"8/R7/2q5/8/6k1/8/1P5p/K6R w - - 0 124", // Draw
|
||||
|
||||
// Mate and stalemate positions
|
||||
"8/8/8/8/8/6k1/6p1/6K1 w - -",
|
||||
"5k2/5P2/5K2/8/8/8/8/8 b - -",
|
||||
"8/8/8/8/8/4k3/4p3/4K3 w - -",
|
||||
"8/8/8/8/8/5K2/8/3Q1k2 b - -",
|
||||
"7k/7P/6K1/8/3B4/8/8/8 b - -"
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -1596,6 +1596,9 @@ bool RootMove::extract_ponder_from_tt(Position& pos)
|
|||
|
||||
assert(pv.size() == 1);
|
||||
|
||||
if (!pv[0])
|
||||
return false;
|
||||
|
||||
pos.do_move(pv[0], st, pos.gives_check(pv[0]));
|
||||
TTEntry* tte = TT.probe(pos.key(), ttHit);
|
||||
|
||||
|
|
|
@ -184,7 +184,8 @@ void ThreadPool::start_thinking(Position& pos, StateListPtr& states,
|
|||
|| std::count(limits.searchmoves.begin(), limits.searchmoves.end(), m))
|
||||
rootMoves.push_back(Search::RootMove(m));
|
||||
|
||||
Tablebases::filter_root_moves(pos, rootMoves);
|
||||
if (!rootMoves.empty())
|
||||
Tablebases::filter_root_moves(pos, rootMoves);
|
||||
|
||||
// After ownership transfer 'states' becomes empty, so if we stop the search
|
||||
// and call 'go' again without setting a new position states.get() == NULL.
|
||||
|
|
Loading…
Add table
Reference in a new issue