diff --git a/libs/map/bookmark_manager.cpp b/libs/map/bookmark_manager.cpp index e93fadb13..1fa35fbf0 100644 --- a/libs/map/bookmark_manager.cpp +++ b/libs/map/bookmark_manager.cpp @@ -296,6 +296,7 @@ void BookmarkManager::DeleteUserMark(kml::MarkId markId) CHECK_THREAD_CHECKER(m_threadChecker, ()); ASSERT(!IsBookmark(markId), ()); auto it = m_userMarks.find(markId); + ASSERT(it != m_userMarks.end(), ()); auto const groupId = it->second->GetGroupId(); GetGroup(groupId)->DetachUserMark(markId); m_changesTracker.OnDeleteMark(markId); diff --git a/libs/map/routing_mark.cpp b/libs/map/routing_mark.cpp index 1e1f62baf..594975d74 100644 --- a/libs/map/routing_mark.cpp +++ b/libs/map/routing_mark.cpp @@ -349,9 +349,11 @@ void RoutePointsLayout::SetFollowingMode(bool enabled) void RoutePointsLayout::RemovePassedPoints() { - for (auto markId : m_manager.GetUserMarkIds(UserMark::Type::ROUTING)) { + // Prevent recalculation of markIds at every iteration, since we are removing elements + auto markIds = m_manager.GetUserMarkIds(UserMark::Type::ROUTING); + for (auto markId : markIds) { auto * mark = m_editSession.GetMarkForEdit(markId); - if (mark->IsPassed()) + if (mark && mark->IsPassed() && mark->GetRoutePointType() == RouteMarkType::Intermediate) m_editSession.DeleteUserMark(mark->GetId()); } }