From f13f2da4ee2eb36a740caddbfb09bbfd927bc52f Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 11 Oct 2011 11:28:05 +0000 Subject: * libc/time/mktm_r.c: (__tzcalc_limits) Fix Julian day calculation. * libc/time/mktime.c: (mktime) Fix tm_yday, tm_mday updating when timezone causes roll over. --- newlib/libc/time/mktm_r.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'newlib/libc/time/mktm_r.c') diff --git a/newlib/libc/time/mktm_r.c b/newlib/libc/time/mktm_r.c index c0ab2191a..9a3bc820e 100644 --- a/newlib/libc/time/mktm_r.c +++ b/newlib/libc/time/mktm_r.c @@ -216,10 +216,13 @@ _DEFUN (__tzcalc_limits, (year), for (i = 0; i < 2; ++i) { - if (tz->__tzrule[i].ch == 'J') + if (tz->__tzrule[i].ch == 'J') { + /* The Julian day n (1 <= n <= 365). */ days = year_days + tz->__tzrule[i].d + (isleap(year) && tz->__tzrule[i].d >= 60); - else if (tz->__tzrule[i].ch == 'D') + /* Convert to yday */ + --days; + } else if (tz->__tzrule[i].ch == 'D') days = year_days + tz->__tzrule[i].d; else { -- cgit v1.2.3