mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Fix a logic bug in TranspositionTable::store()
Make the logic work as advertised in the function description. Still a fallback from TT cleanup. This should be less serious then the one in retrieve(), but it's still a bug. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
cdf1f23bc5
commit
34b1d0538b
1 changed files with 6 additions and 4 deletions
10
src/tt.cpp
10
src/tt.cpp
|
@ -124,12 +124,14 @@ void TranspositionTable::store(const Position &pos, Value v, Depth d,
|
|||
*(tte+i) = TTEntry(pos.get_key(), v, type, d, m, generation);
|
||||
return;
|
||||
}
|
||||
if ( i == 0 // already is (replace == tte+i), common case
|
||||
|| replace->generation() < (tte+i)->generation())
|
||||
if (i == 0) // replace would be a no-op in this common case
|
||||
continue;
|
||||
|
||||
if ( replace->generation() > (tte+i)->generation()
|
||||
|| (tte+i)->depth() < replace->depth())
|
||||
int c1 = (replace->generation() == generation ? 2 : 0);
|
||||
int c2 = ((tte+i)->generation() == generation ? -2 : 0);
|
||||
int c3 = ((tte+i)->depth() < replace->depth() ? 1 : 0);
|
||||
|
||||
if (c1 + c2 + c3 > 0)
|
||||
replace = tte+i;
|
||||
}
|
||||
*replace = TTEntry(pos.get_key(), v, type, d, m, generation);
|
||||
|
|
Loading…
Add table
Reference in a new issue