From 3fda8eebdfd0bc9d92332fc84acc4bd9238e74e3 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Tue, 24 Mar 2020 14:39:00 +0300 Subject: [PATCH] [core] Check invalid track difficulty value. --- map/elevation_info.cpp | 7 +++++++ map/elevation_info.hpp | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/map/elevation_info.cpp b/map/elevation_info.cpp index f165a90d6b..b46928899f 100644 --- a/map/elevation_info.cpp +++ b/map/elevation_info.cpp @@ -44,6 +44,13 @@ ElevationInfo::ElevationInfo(Track const & track) FillProperty(properties, kDescentKey, m_descent); FillProperty(properties, kLowestPointKey, m_minAltitude); FillProperty(properties, kHighestPointKey, m_maxAltitude); + FillProperty(properties, kDifficultyKey, m_difficulty); + if (m_difficulty > kMaxDifficulty) + { + LOG(LWARNING, ("Invalid difficulty value", m_difficulty, "in track", track.GetName())); + m_difficulty = kMaxDifficulty; + } + FillProperty(properties, kDurationKey, m_duration); } diff --git a/map/elevation_info.hpp b/map/elevation_info.hpp index 4269103a09..a5d1c3c36e 100644 --- a/map/elevation_info.hpp +++ b/map/elevation_info.hpp @@ -39,6 +39,8 @@ public: uint32_t GetDuration() const { return m_duration; } private: + static uint8_t constexpr kMaxDifficulty = 3; + kml::TrackId m_id = kml::kInvalidTrackId; std::string m_name; // Points with distance from start of the track and altitude. @@ -51,7 +53,7 @@ private: uint16_t m_minAltitude = 0; // Altitude in meters. uint16_t m_maxAltitude = 0; - // Some digital difficulty level with value in range [0-3] + // Some digital difficulty level with value in range [0-kMaxDifficulty] uint8_t m_difficulty = 0; // Duration in seconds. uint32_t m_duration = 0;