From b63bd7b78ec7ffc3ec3a30c304724619929d0677 Mon Sep 17 00:00:00 2001 From: Shawn Xu Date: Wed, 15 Apr 2026 19:00:13 +0200 Subject: [PATCH] Fix assert the assert checks for `bestThreadDecisive && newThreadDecisive`. However `newThreadDecisive` is not guaranteed at this point, leading to assertion failures. This PR rearranges the conditions to ensure correctness. closes https://github.com/official-stockfish/Stockfish/pull/6716 No functional change --- src/thread.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/thread.cpp b/src/thread.cpp index 7621c4b06..fce27cc50 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -394,12 +394,14 @@ Thread* ThreadPool::get_best_thread() const { if (bestThreadDecisive) { - assert((is_win(bestThreadScore) && is_win(newThreadScore)) - || (is_loss(bestThreadScore) && is_loss(newThreadScore))); - // Make sure we pick the shortest mate / TB conversion. if (newThreadDecisive && std::abs(newThreadScore) > std::abs(bestThreadScore)) + { + assert((is_win(bestThreadScore) && is_win(newThreadScore)) + || (is_loss(bestThreadScore) && is_loss(newThreadScore))); + bestThread = th.get(); + } } else if (newThreadDecisive || (!is_loss(newThreadScore)