From 627526aa77c2a9be1b21272fb02eaa6c6c7b8d88 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Mon, 17 Oct 2022 08:27:07 +0200
Subject: [PATCH] Solved a bug when creating a sub road: remaining lenghts
 smaller than the resolution are ignored.

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

diff --git a/src/opendrive_road.cpp b/src/opendrive_road.cpp
index 98f9264..a4e0dce 100644
--- a/src/opendrive_road.cpp
+++ b/src/opendrive_road.cpp
@@ -1119,7 +1119,7 @@ double COpendriveRoad::get_closest_pose(TOpendriveWorldPose &pose,TOpendriveWorl
 {
   double dist,min_dist=std::numeric_limits<double>::max();
   TOpendriveWorldPose pose_found;
-  double length,closest_length;
+  double length,closest_length=std::numeric_limits<double>::max();
 
   for(unsigned int i=0;i<this->nodes.size();i++)
   {
@@ -1312,7 +1312,7 @@ std::vector<unsigned int> COpendriveRoad::get_sub_road(TOpendriveWorldPose &star
   new_road.add_segment(new_segment);
   new_segment_ref[(COpendriveRoadSegment *)segment]=new_segment;
   new_road.add_neighbors(segment,new_segment_ref,new_node_ref,new_lane_ref,new_link_ref,tmp_start_pose,tmp_end_pose);
-  while(segment!=end_segment || node_side!=end_segment_side)
+  while((segment!=end_segment || node_side!=end_segment_side) && rem_length>this->resolution)
   {
     segment=segment->get_next_path_segment(path_nodes,node_side,node_side);
     if((rem_length-segment->get_length())<0.0)
-- 
GitLab