From baf86a4f4e1fc10a31fdfd741ddb918dbcb8b6f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Iv=C3=A1n=20del=20Pino?= <idelpino@iri.upc.edu>
Date: Fri, 22 Apr 2022 16:32:53 +0200
Subject: [PATCH] added comprobation when using kdtree.nearestKSearch to avoid
 accessing out of vector

---
 src/kf_based_terrain_analysis.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/kf_based_terrain_analysis.cpp b/src/kf_based_terrain_analysis.cpp
index 521f2a3..d8ed96f 100644
--- a/src/kf_based_terrain_analysis.cpp
+++ b/src/kf_based_terrain_analysis.cpp
@@ -846,7 +846,7 @@ void CKf_Based_Terrain_Analysis::labelPointcloudUsingGroundModel(
     std::vector<int> pointIdxKNNSearch(K);
     std::vector<float> pointKNNSquaredDistance(K);
 
-    kdtree.nearestKSearch(point_in_sensor_frame, K, pointIdxKNNSearch, pointKNNSquaredDistance);
+    int num_of_references_found = kdtree.nearestKSearch(point_in_sensor_frame, K, pointIdxKNNSearch, pointKNNSquaredDistance);
 
     int best_reference_index = -1;
     int best_reference_index_predicting_ground = -1;
@@ -856,7 +856,7 @@ void CKf_Based_Terrain_Analysis::labelPointcloudUsingGroundModel(
     float min_obstacle_pred_std_dev = 10000.0;
     float best_pred_std_dev = 10000.0;
 
-    for (int reference_iterator = 0; reference_iterator < K; ++reference_iterator)
+    for (int reference_iterator = 0; reference_iterator < num_of_references_found; ++reference_iterator)
     {
       pcl::PointXYZRGBNormal reference_in_sensor_frame =
           ground_reference_cloud_ptr->points[pointIdxKNNSearch[reference_iterator]];
-- 
GitLab