From: Jaroslav Kysela Date: Sun, 27 Mar 2016 18:02:46 +0000 (+0200) Subject: timerec: fix 20:40 ... 00:40 case, fixes #3662 X-Git-Tag: v4.2.1~792 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50983577402b975e5a542a12cc07d4578452bc83;p=thirdparty%2Ftvheadend.git timerec: fix 20:40 ... 00:40 case, fixes #3662 --- diff --git a/src/dvr/dvr_timerec.c b/src/dvr/dvr_timerec.c index c75510e88..7da367bd9 100644 --- a/src/dvr/dvr_timerec.c +++ b/src/dvr/dvr_timerec.c @@ -105,7 +105,7 @@ void dvr_timerec_check(dvr_timerec_entry_t *dte) { dvr_entry_t *de; - time_t start, stop, limit; + time_t clk, start, stop, limit; struct tm tm_start, tm_stop; const char *title; char buf[200]; @@ -119,22 +119,21 @@ dvr_timerec_check(dvr_timerec_entry_t *dte) if(dte->dte_channel == NULL) goto fail; - limit = gclk() - 600; - start = dvr_timerec_timecorrection(gclk(), dte->dte_start, &tm_start); - stop = dvr_timerec_timecorrection(gclk(), dte->dte_stop, &tm_stop); + clk = gclk(); + limit = clk - 600; + start = dvr_timerec_timecorrection(clk, dte->dte_start, &tm_start); + stop = dvr_timerec_timecorrection(clk, dte->dte_stop, &tm_stop); if (start < limit && stop < limit) { /* next day */ - start = dvr_timerec_timecorrection(gclk() + 24*60*60, - dte->dte_start, - &tm_start); - stop = dvr_timerec_timecorrection(gclk() + 24*60*60, - dte->dte_stop, - &tm_stop); + clk += 24*60*60; + start = dvr_timerec_timecorrection(clk, dte->dte_start, &tm_start); + stop = dvr_timerec_timecorrection(clk, dte->dte_stop, &tm_stop); } /* day boundary correction */ - if (start > stop) - stop += 24 * 60 * 60; - assert(start <= stop); + while (start > stop) { + clk += 24*60*60; + stop = dvr_timerec_timecorrection(clk, dte->dte_stop, &tm_stop); + } if(dte->dte_weekdays != 0x7f) { localtime_r(&start, &tm_start);