diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a9552d06..e72cbe0e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# 5.5.2 + - Changes from 5.5.1 + - Bugfixes + - Fix #3475 removed an invalid `exit` field from the `arrive` maneuver + # 5.5.1 - Changes from 5.5.0 - API: diff --git a/include/engine/guidance/assemble_steps.hpp b/include/engine/guidance/assemble_steps.hpp index 4ae1fd280..d7e58c3db 100644 --- a/include/engine/guidance/assemble_steps.hpp +++ b/include/engine/guidance/assemble_steps.hpp @@ -259,6 +259,8 @@ inline std::vector assembleSteps(const datafacade::BaseDataFacade &fa BOOST_ASSERT(steps.back().intersections.front().lanes.first_lane_from_the_right == INVALID_LANEID); BOOST_ASSERT(steps.back().intersections.front().lane_description.empty()); + // depart and arrive need to be trivial + BOOST_ASSERT(steps.front().maneuver.exit == 0 && steps.back().maneuver.exit == 0); return steps; } diff --git a/include/util/debug.hpp b/include/util/debug.hpp index 69eb745ee..79aabdda6 100644 --- a/include/util/debug.hpp +++ b/include/util/debug.hpp @@ -29,6 +29,7 @@ inline void print(const engine::guidance::RouteStep &step) << " " << " Duration: " << step.duration << " Distance: " << step.distance << " Geometry: " << step.geometry_begin << " " << step.geometry_end + << " Exit: " << step.maneuver.exit << "\n\tIntersections: " << step.intersections.size() << " ["; for (const auto &intersection : step.intersections) diff --git a/src/engine/guidance/post_processing.cpp b/src/engine/guidance/post_processing.cpp index 5db7bc7a0..6c59372ca 100644 --- a/src/engine/guidance/post_processing.cpp +++ b/src/engine/guidance/post_processing.cpp @@ -147,10 +147,9 @@ void fixFinalRoundabout(std::vector &steps) --propagation_index) { auto &propagation_step = steps[propagation_index]; + propagation_step.maneuver.exit = 0; if (entersRoundabout(propagation_step.maneuver.instruction)) { - propagation_step.maneuver.exit = 0; - // remember the current name as rotary name in tha case we end in a rotary if (propagation_step.maneuver.instruction.type == TurnType::EnterRotary || propagation_step.maneuver.instruction.type == TurnType::EnterRotaryAtExit) @@ -158,12 +157,13 @@ void fixFinalRoundabout(std::vector &steps) propagation_step.rotary_name = propagation_step.name; propagation_step.rotary_pronunciation = propagation_step.pronunciation; } - else if (propagation_step.maneuver.instruction.type == TurnType::EnterRoundaboutIntersection || propagation_step.maneuver.instruction.type == TurnType::EnterRoundaboutIntersectionAtExit) + { propagation_step.maneuver.instruction.type = TurnType::EnterRoundabout; + } return; }