day.c: Fix weekly view

Calculate busy slices correctly if (recurrent) appointments with a
duration of more than 24 hours are used.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2012-11-26 02:01:56 +01:00
parent 0ea23c24bf
commit 7f16e1c1d3

View File

@ -507,6 +507,11 @@ unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices)
long start = get_item_time(rapt->start);
long end = get_item_time(rapt->start + rapt->dur);
if (rapt->start < date)
start = 0;
if (rapt->start + rapt->dur >= date + DAYINSEC)
end = DAYINSEC - 1;
if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) {
LLIST_TS_UNLOCK(&recur_alist_p);
return 0;
@ -522,6 +527,10 @@ unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices)
if (apt->start >= date + DAYINSEC)
break;
if (apt->start < date)
start = 0;
if (apt->start + apt->dur >= date + DAYINSEC)
end = DAYINSEC - 1;
if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) {
LLIST_TS_UNLOCK(&alist_p);