From 3e4fed3a91752da394f7c912f4e5e29dc39391f6 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Mon, 28 Dec 2015 13:14:49 +0100 Subject: [PATCH] Fix assert with very high score position In case of a very high material score, we can overflow VALUE_INFINITE. This patch fixes an assert with: position fen 7k/QQQQR3/2B5/4KN1Q/3QQ3/8/8/4R3 b - - 0 1 go depth 1 No functional change. Resolves #546 --- src/endgame.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/endgame.cpp b/src/endgame.cpp index b64b3d1b..681b290c 100644 --- a/src/endgame.cpp +++ b/src/endgame.cpp @@ -163,7 +163,7 @@ Value Endgame::operator()(const Position& pos) const { ||(pos.count(strongSide) && pos.count(strongSide)) ||(pos.count(strongSide) > 1 && opposite_colors(pos.squares(strongSide)[0], pos.squares(strongSide)[1]))) - result += VALUE_KNOWN_WIN; + result = std::min(result + VALUE_KNOWN_WIN, VALUE_MATE_IN_MAX_PLY - 1); return strongSide == pos.side_to_move() ? result : -result; } -- 2.39.2