Skip to content

Commit 8f5769f

Browse files
authored
in cover_tree.rs i64::MIN - 1 causes overflow. FIXED. (#361)
* in cover_tree.rs i64::MIN - 1 causes overflow. FIXED.
1 parent c77781b commit 8f5769f

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

src/algorithm/neighbour/cover_tree.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,10 @@ impl<T: Debug + PartialEq, D: Distance<T>> CoverTree<T, D> {
290290
self.new_leaf(p)
291291
} else {
292292
let max_dist = self.max(point_set);
293-
let next_scale = (max_scale - 1).min(self.get_scale(max_dist));
293+
let next_scale = max_scale // bugfix i64::MIN - 1 causes overflow
294+
.checked_sub(1) // returns None if overflow
295+
.map(|s| s.min(self.get_scale(max_dist)))
296+
.unwrap_or(i64::MIN); // safely getting required value
294297
if next_scale == i64::MIN {
295298
let mut children: Vec<Node> = Vec::new();
296299
let mut leaf = self.new_leaf(p);

src/metrics/distance/jaccard.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ mod tests {
8989
all(target_arch = "wasm32", not(target_os = "wasi")),
9090
wasm_bindgen_test::wasm_bindgen_test
9191
)]
92-
9392
#[test]
9493
fn jaccard_distance() {
9594
let a = vec![1, 0, 1, 1];
@@ -133,4 +132,3 @@ mod tests {
133132
assert!((d1 - d2).abs() < 1e-12);
134133
}
135134
}
136-

0 commit comments

Comments
 (0)