From c9d5d7a40e830cf47714fb276f7aa46fa4017512 Mon Sep 17 00:00:00 2001 From: "Shahin M. Shahin" Date: Mon, 23 Mar 2026 09:25:36 +0300 Subject: [PATCH] Fix a bug in `go depth` Bench: 3554133 --- src/search.rs | 8 +++++++- src/time.rs | 3 +-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/search.rs b/src/search.rs index 2832b100..8d0941ab 100644 --- a/src/search.rs +++ b/src/search.rs @@ -5,6 +5,7 @@ use crate::{ movepick::{MovePicker, Stage}, stack::Stack, thread::{RootMove, Status, ThreadData}, + time::Limits, transposition::{Bound, TtDepth}, types::{ ArrayVec, Color, MAX_PLY, Move, Piece, PieceType, Score, Square, draw, is_decisive, is_loss, is_valid, is_win, @@ -77,8 +78,13 @@ pub fn start(td: &mut ThreadData, report: Report, thread_count: usize) { let mut best_move_changes = 0; let mut soft_stop_voted = false; + let max_depth = match td.time_manager.limits() { + Limits::Depth(maximum) => maximum, + _ => (MAX_PLY - 1) as i32, + }; + // Iterative Deepening - for depth in 1..MAX_PLY as i32 { + for depth in 1..=max_depth { best_move_changes /= 2; td.sel_depth = 0; diff --git a/src/time.rs b/src/time.rs index 7b9a9db8..aa1c087b 100644 --- a/src/time.rs +++ b/src/time.rs @@ -69,8 +69,7 @@ impl TimeManager { pub fn soft_limit(&self, td: &ThreadData, multiplier: impl Fn() -> f32) -> bool { match self.limits { - Limits::Infinite => false, - Limits::Depth(maximum) => td.completed_depth >= maximum, + Limits::Infinite | Limits::Depth(_) => false, Limits::Nodes(maximum) => td.shared.nodes.aggregate() >= maximum, Limits::Time(maximum) => self.start_time.elapsed() >= Duration::from_millis(maximum), _ => self.start_time.elapsed() >= Duration::from_secs_f32(self.soft_bound.as_secs_f32() * multiplier()),