watch out for month overflow

SCCS-file: zic.c
SCCS-SID: 2.29
This commit is contained in:
Arthur David Olson
2012-07-18 03:01:40 -04:00
committed by Paul Eggert
parent 303e209ab1
commit f46a98402b
+14 -5
View File
@@ -1388,11 +1388,20 @@ register long wantedy;
wday += 7;
}
while (wday != rp->r_wday) {
if (rp->r_dycode == DC_DOWGEQ)
i = 1;
else i = -1;
dayoff = tadd(dayoff, i);
wday = (wday + i + 7) % 7;
if (rp->r_dycode == DC_DOWGEQ) {
dayoff = tadd(dayoff, (long) 1);
++wday;
++i;
} else {
dayoff = tadd(dayoff, (long) -1);
--wday;
--i;
}
wday = (wday + 7) % 7;
}
if (i < 0 || i >= mon_lengths[isleap(y)][m]) {
error("no day in month matches rule");
exit(1);
}
}
t = dayoff * SECS_PER_DAY;