From 91263a671243f6c5bccb62f548b224ebabc572a1 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 27 Mar 2016 20:02:46 +0200 Subject: [PATCH] timerec: fix 20:40 ... 00:40 case, fixes #3662 --- src/dvr/dvr_timerec.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/dvr/dvr_timerec.c b/src/dvr/dvr_timerec.c index 2287d0ff7..7d0ef35be 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]; @@ -118,22 +118,21 @@ dvr_timerec_check(dvr_timerec_entry_t *dte) if(dte->dte_channel == NULL) goto fail; - limit = dispatch_clock - 600; - start = dvr_timerec_timecorrection(dispatch_clock, dte->dte_start, &tm_start); - stop = dvr_timerec_timecorrection(dispatch_clock, dte->dte_stop, &tm_stop); + clk = dispatch_clock; + 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(dispatch_clock + 24*60*60, - dte->dte_start, - &tm_start); - stop = dvr_timerec_timecorrection(dispatch_clock + 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); -- 2.47.3