From 9a32aa5613f4baf5156193b3367806bc074a8cbf Mon Sep 17 00:00:00 2001 From: NetterSilver <133535268+Silvertree2010@users.noreply.github.com> Date: Sat, 24 Oct 2026 07:49:02 +0200 Subject: [PATCH] Reject doubled minus sign in parse_distance (#1707) Found while testing crates/engine/src/units.rs:138-160 Co-authored-by: Claude Haiku 5.5 --- crates/engine/src/units.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/engine/src/units.rs b/crates/engine/src/units.rs index 83c11531..5575273c 100644 --- a/crates/engine/src/units.rs +++ b/crates/engine/src/units.rs @@ -142,6 +142,9 @@ pub fn parse_distance(s: &str) -> Option { Some(r) => (true, r.trim()), None => (false, t), }; + if neg && t.starts_with(['-', '+']) { + return None; + } let mut total = 0.0; let mut rest = t; let mut parsed = false; @@ -430,6 +433,14 @@ mod tests { assert_eq!(parse_distance(""), None); } + #[test] + fn parse_distance_rejects_doubled_minus() { + assert_eq!(parse_distance("--5"), None); + assert_eq!(parse_distance("- -3/4"), None); + assert_eq!(parse_distance("-5"), Some(-5.0)); + assert_eq!(parse_distance("-3/4"), Some(-0.75)); + } + #[test] fn parse_distance_needs_a_number() { assert_eq!(parse_distance("-"), None);