From 41101efaa5fdcc83be7422d31378e7fabe9cbf0d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 19 Sep 2026 15:45:18 +0000 Subject: [PATCH] fix(trim): skip empty preview polyline segment samples Co-authored-by: dasmatus <330471626+dasmatus@users.noreply.github.com> (cherry picked from commit fb13a7aaa6b1505d749c384cbdbbaa80bc040c4b) --- src/modules/draw/modify/trim.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/modules/draw/modify/trim.rs b/src/modules/draw/modify/trim.rs index 31f29e3cd..f6347ca6e 100644 --- a/src/modules/draw/modify/trim.rs +++ b/src/modules/draw/modify/trim.rs @@ -3859,6 +3859,23 @@ mod tests { "the shared vertex appears once, not twice: {pts:?}" ); } + + #[test] + fn preview_sampling_skips_edge_on_polyline2d_arc_segments() { + use acadrust::entities::{Polyline2D, Vertex2D}; + + let mut pl = Polyline2D::new(); + let mut start = Vertex2D::new(Vector3::new(0.0, 0.0, 0.0)); + start.bulge = 1.0; + pl.vertices = vec![start, Vertex2D::new(Vector3::new(2.0, 0.0, 0.0))]; + pl.normal = Vector3::new(1.0, 0.0, 0.0); + + let pts = preview_sample_xy(&EntityType::Polyline2D(pl)); + assert!( + pts.is_empty(), + "edge-on arc segments are skipped instead of panicking: {pts:?}" + ); + } } // ══════════════════════════════════════════════════════════════════════════ @@ -4086,6 +4103,9 @@ fn preview_sample_xy(e: &EntityType) -> Vec<[f64; 2]> { } _ => sample_entity_xy(&seg), }; + if sp.is_empty() { + continue; + } if pts.last() == sp.first() { pts.extend_from_slice(&sp[1..]); } else {