Fix an assert in Probcut
authorMarco Costalba <mcostalba@gmail.com>
Sat, 22 Feb 2014 09:34:48 +0000 (10:34 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 22 Feb 2014 09:38:21 +0000 (10:38 +0100)
When running the following position:

8/kPp5/2P3p1/p1P1p1P1/2PpPp2/3p1p2/3P1P2/5K2 w - - 0 1

An assert is raised at depth 92:

assert(-VALUE_INFINITE <= alpha && alpha < beta && beta <= VALUE_INFINITE);

This is because it happens that beta = 29832,
so rbeta = 30032 that is > VALUE_INFINITE

Bug spotted and analyzed by Uri, fix suggested by Joerg.

Other fixes where possible but this one is pointed
exactly at the source of the bug, so it is the best
from a code documentation point of view.

bench: 8430785

src/search.cpp

index da22c5cff066f505ba5eed5537904fc0ed97d32b..c84ad24b2a8b99b0993904e017ff53d17fdb0123 100644 (file)
@@ -668,7 +668,7 @@ namespace {
         && !ss->skipNullMove
         &&  abs(beta) < VALUE_MATE_IN_MAX_PLY)
     {
-        Value rbeta = beta + 200;
+        Value rbeta = std::min(beta + 200, VALUE_INFINITE);
         Depth rdepth = depth - ONE_PLY - 3 * ONE_PLY;
 
         assert(rdepth >= ONE_PLY);