From 0d8e8eb5332118b62a834ef216592d93a82f7b4d Mon Sep 17 00:00:00 2001 From: Alexander Sikorski Date: Mon, 25 Oct 2021 23:12:15 +0200 Subject: [PATCH 1/2] test for BoundsError on `skip = i -> true` https://github.com/KristofferC/NearestNeighbors.jl/issues/127 --- test/test_knn.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_knn.jl b/test/test_knn.jl index 3648ae5..3fbfa49 100644 --- a/test/test_knn.jl +++ b/test/test_knn.jl @@ -79,6 +79,8 @@ end idxs, dists = knn(tree, data[:, 10], 2, true, i -> i == first_idx) @test idxs[1] == second_idx + + idxs, dists = knn(tree, data[:,10], 1, true, i -> true) end data = rand(2, 1000) test(data) From 881fad10db7b128e3745b261d22af5c3e5586ec1 Mon Sep 17 00:00:00 2001 From: Alexander Sikorski Date: Mon, 25 Oct 2021 23:14:06 +0200 Subject: [PATCH 2/2] Fix BoundsError on `skip = i -> true` fixes https://github.com/KristofferC/NearestNeighbors.jl/issues/127 --- src/knn.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/knn.jl b/src/knn.jl index 6fb4bb1..8694aae 100644 --- a/src/knn.jl +++ b/src/knn.jl @@ -33,6 +33,7 @@ function knn_point!(tree::NNTree{V}, point::AbstractVector{T}, sortres, dist, id sortres && heap_sort_inplace!(dist, idx) if tree.reordered for j in eachindex(idx) + idx[j] == -1 && continue @inbounds idx[j] = tree.indices[idx[j]] end end