From 55fbfc7d306361dd049e744487ece92b8f3b1d11 Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Mon, 8 Feb 2016 14:48:36 +0300 Subject: [PATCH] Routing stats crash fix. --- map/framework.cpp | 2 +- routing/base/followed_polyline.cpp | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index e59d1fb8f8..cf56112e4e 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -2056,7 +2056,7 @@ void Framework::RemoveRoute(bool deactivateFollowing) void Framework::CloseRouting() { - if (m_routingSession.IsActive()) + if (m_routingSession.IsBuilt()) { auto const lastGoodPoint = MercatorBounds::ToLatLon( m_routingSession.GetRoute().GetFollowedPolyline().GetCurrentIter().m_pt); diff --git a/routing/base/followed_polyline.cpp b/routing/base/followed_polyline.cpp index 05491a038e..92d38dc9d8 100644 --- a/routing/base/followed_polyline.cpp +++ b/routing/base/followed_polyline.cpp @@ -43,14 +43,22 @@ double FollowedPolyline::GetDistanceM(Iter const & it1, Iter const & it2) const double FollowedPolyline::GetTotalDistanceM() const { - ASSERT(IsValid(), ()); + if (!IsValid()) + { + ASSERT(IsValid(), ()); + return 0; + } return m_segDistance.back(); } double FollowedPolyline::GetDistanceFromBeginM() const { - ASSERT(IsValid(), ()); - ASSERT(m_current.IsValid(), ()); + if (!IsValid() || !m_current.IsValid()) + { + ASSERT(IsValid(), ()); + ASSERT(m_current.IsValid(), ()); + return 0; + } return (m_current.m_ind > 0 ? m_segDistance[m_current.m_ind - 1] : 0.0) + MercatorBounds::DistanceOnEarth(m_current.m_pt, m_poly.GetPoint(m_current.m_ind));