From 336734d276d50c8480ca3d62bdf459a5351f76e6 Mon Sep 17 00:00:00 2001 From: Vlad Vesa Date: Sat, 5 Mar 2022 09:16:39 +0200 Subject: [PATCH] Fixed interpolation generating invalid times --- src/libs/gtfs/src/gtfs/time.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libs/gtfs/src/gtfs/time.cpp b/src/libs/gtfs/src/gtfs/time.cpp index 9a87758..2d9c648 100644 --- a/src/libs/gtfs/src/gtfs/time.cpp +++ b/src/libs/gtfs/src/gtfs/time.cpp @@ -40,7 +40,7 @@ time::time(const std::string & raw_time_str) : raw_time(raw_time_str) mm = static_cast(std::stoi(raw_time.substr(len - 5, 2))); ss = static_cast(std::stoi(raw_time.substr(len - 2))); - if (mm > 60 || ss > 60) + if (mm > 59 || ss > 59) throw invalid_field_format("time minutes/seconds wrong value: " + std::to_string(mm) + " minutes, " + std::to_string(ss) + " seconds"); @@ -55,7 +55,7 @@ time::time(size_t seconds) mm = seconds / 60; ss = seconds % 60; - if (mm > 60 || ss > 60) + if (mm > 59 || ss > 59) throw invalid_field_format("time is out of range: " + std::to_string(mm) + "minutes " + std::to_string(ss) + "seconds"); @@ -68,7 +68,7 @@ time::time(size_t seconds) time::time(uint16_t hours, uint16_t minutes, uint16_t seconds) : hh(hours), mm(minutes), ss(seconds) { - if (mm > 60 || ss > 60) + if (mm > 59 || ss > 59) throw invalid_field_format("time is out of range: " + std::to_string(mm) + "minutes " + std::to_string(ss) + "seconds"); @@ -92,14 +92,14 @@ time& time::add_seconds(size_t seconds) auto s = seconds % 60; ss += s; - if (ss > 60) + if (ss > 59) { ss = ss % 60; mm++; } mm += m; - if (mm > 60) + if (mm >= 59) { mm = mm % 60; hh++;