From 2235c98c46efa7abb6313685c74f1529c9461ce5 Mon Sep 17 00:00:00 2001 From: Andrey Shevchenko Date: Thu, 19 Mar 2026 14:16:25 +0300 Subject: [PATCH 1/3] in cover_tree.rs i64::MIN - 1 causes overflow. FIXED. --- src/algorithm/neighbour/cover_tree.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/algorithm/neighbour/cover_tree.rs b/src/algorithm/neighbour/cover_tree.rs index 9989ae24..d8d9a19a 100644 --- a/src/algorithm/neighbour/cover_tree.rs +++ b/src/algorithm/neighbour/cover_tree.rs @@ -290,7 +290,7 @@ impl> CoverTree { self.new_leaf(p) } else { let max_dist = self.max(point_set); - let next_scale = (max_scale - 1).min(self.get_scale(max_dist)); + let next_scale = max_scale.checked_sub(1).map(|s| s.min(self.get_scale(max_dist))).unwrap_or(i64::MIN); // bugfix i64::MIN - 1 causes overflow if next_scale == i64::MIN { let mut children: Vec = Vec::new(); let mut leaf = self.new_leaf(p); From 08d590e6f7ee1a905c2f784816558a672c9e0716 Mon Sep 17 00:00:00 2001 From: Andrey Shevchenko Date: Thu, 19 Mar 2026 15:56:28 +0300 Subject: [PATCH 2/3] formatting --- src/algorithm/neighbour/cover_tree.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/algorithm/neighbour/cover_tree.rs b/src/algorithm/neighbour/cover_tree.rs index d8d9a19a..9a200a12 100644 --- a/src/algorithm/neighbour/cover_tree.rs +++ b/src/algorithm/neighbour/cover_tree.rs @@ -290,7 +290,10 @@ impl> CoverTree { self.new_leaf(p) } else { let max_dist = self.max(point_set); - let next_scale = max_scale.checked_sub(1).map(|s| s.min(self.get_scale(max_dist))).unwrap_or(i64::MIN); // bugfix i64::MIN - 1 causes overflow + let next_scale = max_scale // bugfix i64::MIN - 1 causes overflow + .checked_sub(1) // returns None if overflow + .map(|s| s.min(self.get_scale(max_dist))) + .unwrap_or(i64::MIN); // safely getting required value if next_scale == i64::MIN { let mut children: Vec = Vec::new(); let mut leaf = self.new_leaf(p); From 8ead30c46dd20c2fe1dac05f13a7dab1dd022608 Mon Sep 17 00:00:00 2001 From: Andrey Shevchenko Date: Thu, 19 Mar 2026 16:00:11 +0300 Subject: [PATCH 3/3] formatting --- src/metrics/distance/jaccard.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/metrics/distance/jaccard.rs b/src/metrics/distance/jaccard.rs index 4834e2e3..a3a13dcf 100644 --- a/src/metrics/distance/jaccard.rs +++ b/src/metrics/distance/jaccard.rs @@ -89,7 +89,6 @@ mod tests { all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test )] - #[test] fn jaccard_distance() { let a = vec![1, 0, 1, 1]; @@ -133,4 +132,3 @@ mod tests { assert!((d1 - d2).abs() < 1e-12); } } -