leads to (signal: 11, SIGSEGV: invalid memory reference).
This patch:
--- a/src/immutable/common/generate_immutable_nearest_one.rs
+++ b/src/immutable/common/generate_immutable_nearest_one.rs
@@ -102,8 +102,7 @@ macro_rules! generate_immutable_nearest_one {
) where
D: DistanceMetric<A, K>,
{
- let leaf_node = unsafe { self.leaves.get_unchecked(leaf_idx) };
- // let leaf_node = &self.leaves[leaf_idx];
+ let leaf_node = &self.leaves[leaf_idx];
let mut best_item = nearest.item;
let mut best_dist = nearest.distance;
allows to get a stack:
index out of bounds: the len is 0 but the index is 0
stack backtrace:
0: rust_begin_unwind
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:645:5
1: core::panicking::panic_fmt
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/panicking.rs:72:14
2: core::panicking::panic_bounds_check
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/panicking.rs:208:5
3: <usize as core::slice::index::SliceIndex<[T]>>::index
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/slice/index.rs:255:10
4: core::slice::index::<impl core::ops::index::Index<I> for [T]>::index
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/slice/index.rs:18:9
5: <alloc::vec::Vec<T,A> as core::ops::index::Index<I>>::index
at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/alloc/src/vec/mod.rs:2770:9
6: kiddo::immutable::float::query::nearest_one::<impl kiddo::immutable::float::kdtree::ImmutableKdTree<A,T,_,_>>::search_leaf_for_nearest
at /home/robert/kiddo/src/immutable/common/generate_immutable_nearest_one.rs:105:45
7: kiddo::immutable::float::query::nearest_one::<impl kiddo::immutable::float::kdtree::ImmutableKdTree<A,T,_,_>>::nearest_one_recurse
at /home/robert/kiddo/src/immutable/common/generate_immutable_nearest_one.rs:40:21
8: kiddo::immutable::float::query::nearest_one::<impl kiddo::immutable::float::kdtree::ImmutableKdTree<A,T,_,_>>::nearest_one
at /home/robert/kiddo/src/immutable/common/generate_immutable_nearest_one.rs:13:17
Running this code with Kiddo 4.2.0:
leads to
(signal: 11, SIGSEGV: invalid memory reference)
.This patch:
allows to get a stack: