diff --git a/src/algorithm/neighbour/cover_tree.rs b/src/algorithm/neighbour/cover_tree.rs index 9989ae24..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 - 1).min(self.get_scale(max_dist)); + 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); 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); } } -