From 8c1471078d0b6b84a2912892f5b445fe8339547c Mon Sep 17 00:00:00 2001 From: Hakan Seven Date: Fri, 2 Oct 2026 00:08:55 +0300 Subject: [PATCH] fix(control): unbounded entities no longer overflow the capture candidate area An XLINE or RAY projects to saturated i32 corners; their difference overflowed and panicked the debug build on every capture. Co-Authored-By: Claude Opus 5.5 --- src/app/control/vision.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/control/vision.rs b/src/app/control/vision.rs index f5a006f11..7aa0f3d30 100644 --- a/src/app/control/vision.rs +++ b/src/app/control/vision.rs @@ -254,7 +254,10 @@ pub(crate) fn compute_grounding( s_max_y = y0.max(y1); } - let area = ((s_max_x - s_min_x).abs() * (s_max_y - s_min_y).abs()) as f32; + // An unbounded entity (XLINE, RAY) projects to saturated i32 + // corners, whose difference overflows i32. + let width = (f64::from(s_max_x) - f64::from(s_min_x)).abs(); + let area = (width * (f64::from(s_max_y) - f64::from(s_min_y)).abs()) as f32; let selected = selected_set.contains(&handle); let layer = entity.common().layer.clone();