From 75d5b7a45371df191debc8140ff5d250062a4a0a Mon Sep 17 00:00:00 2001 From: Jihoon Lee Date: Thu, 6 Jul 2017 14:32:45 +0200 Subject: [PATCH] Check imu_data array size before access (#392) --- .../sparse_pose_graph/optimization_problem.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cartographer/mapping_2d/sparse_pose_graph/optimization_problem.cc b/cartographer/mapping_2d/sparse_pose_graph/optimization_problem.cc index 07ea8d0..d5233a4 100644 --- a/cartographer/mapping_2d/sparse_pose_graph/optimization_problem.cc +++ b/cartographer/mapping_2d/sparse_pose_graph/optimization_problem.cc @@ -89,10 +89,12 @@ void OptimizationProblem::TrimTrajectoryNode(const mapping::NodeId& node_id) { CHECK_EQ(trajectory_data.num_trimmed_nodes, node_id.node_index); auto& node_data = node_data_.at(node_id.trajectory_id); CHECK(!node_data.empty()); - const common::Time node_time = node_data.front().time; - auto& imu_data = imu_data_.at(node_id.trajectory_id); - while (imu_data.size() > 1 && imu_data[1].time <= node_time) { - imu_data.pop_front(); + if (node_id.trajectory_id < static_cast(imu_data_.size())) { + const common::Time node_time = node_data.front().time; + auto& imu_data = imu_data_.at(node_id.trajectory_id); + while (imu_data.size() > 1 && imu_data[1].time <= node_time) { + imu_data.pop_front(); + } } node_data.pop_front(); ++trajectory_data.num_trimmed_nodes;