From cd1438b3e1c386918591d8b5c6503ed0f0093828 Mon Sep 17 00:00:00 2001 From: Eric Petit Date: Thu, 28 Feb 2019 21:02:52 +0000 Subject: [PATCH] Fix rounding error in dvb_mjd_get() It could cause Mar 1 to be misinterpreted as Feb 32, which timegm() then transforms into Mar 4 (only on some years, including 2019) --- dvb/si/datetime.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvb/si/datetime.h b/dvb/si/datetime.h index 387423b..e5e1744 100644 --- a/dvb/si/datetime.h +++ b/dvb/si/datetime.h @@ -60,7 +60,7 @@ static inline void dvb_mjd_get(uint16_t mjd, int *y, int *m, int *d) { int k; int yp = (mjd * 20 - 301564) / 7305; - int mp = (mjd * 10000 - 149561000 - yp * 3652500) / 306001; + int mp = (mjd * 10000 - 149561000 - 10000 * (yp * 1461 / 4)) / 306001; *d = mjd - 14956 - yp * 1461 / 4 - mp * 306001 / 10000; k = (mp == 14 || mp == 15) ? 1 : 0; *y = yp + k;