From 1d7696fb6aafcedfd01c6b517884e272909d2dcc Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Sat, 6 Aug 2011 17:45:20 +0100 Subject: [PATCH] Fit files sometimes go backwards FIT record type '253' occasionally causes time to go backwards, this might be a decoding error, but for now we force time to go forward anyway. Looking at bad files GPS data with this patch suggests this is the correct behaviour. Fixes #104. --- src/FitRideFile.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/FitRideFile.cpp b/src/FitRideFile.cpp index 881a31f72..b3fc6bd5e 100644 --- a/src/FitRideFile.cpp +++ b/src/FitRideFile.cpp @@ -326,7 +326,11 @@ struct FitFileReaderState continue; switch (field.num) { - case 253: time = value + qbase_time.toTime_t(); break; + case 253: time = value + qbase_time.toTime_t(); + // Time MUST NOT go backwards + // You canny break the laws of physics, Jim + if (time < last_time) time = last_time; + break; case 0: lati = value; break; case 1: lngi = value; break; case 2: alt = value / 5.0 - 500.0; break;