mirror of
https://github.com/sockspls/badfish
synced 2025-05-02 01:29:36 +00:00
Ensure ttValue != VALUE_NONE in singular extension search
The assert: assert(ttValue != VALUE_NONE); Could fire for multiple reasons (although is very rare), for instance after an IID we can have ttMove != MOVE_NONE while ttValue is still set at VALUE_NONE. But not only this, actually SMP is a source of corrupted ttValue and anyhow we can detect the condition: ttMove != MOVE_NONE && ttValue == VALUE_NONE even north of IID. Reported by Ronald de Man. It is so rare that bench didn't change. bench: 7710548
This commit is contained in:
parent
43efd7fad7
commit
e8baf2b772
1 changed files with 1 additions and 2 deletions
|
@ -700,6 +700,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
|||
&& depth >= 8 * ONE_PLY
|
||||
&& abs(beta) < VALUE_KNOWN_WIN
|
||||
&& ttMove != MOVE_NONE
|
||||
&& ttValue != VALUE_NONE
|
||||
&& !excludedMove // Recursive singular search is not allowed
|
||||
&& (tte->bound() & BOUND_LOWER)
|
||||
&& tte->depth() >= depth - 3 * ONE_PLY;
|
||||
|
@ -766,8 +767,6 @@ moves_loop: // When in check and at SpNode search starts from here
|
|||
&& !ext
|
||||
&& pos.legal(move, ci.pinned))
|
||||
{
|
||||
assert(ttValue != VALUE_NONE);
|
||||
|
||||
Value rBeta = ttValue - int(depth);
|
||||
ss->excludedMove = move;
|
||||
ss->skipNullMove = true;
|
||||
|
|
Loading…
Add table
Reference in a new issue