From 47f3da1cf49377c25772bb54d07db55225bbb142 Mon Sep 17 00:00:00 2001
From: Guillaume Bourcier <guillaumebourcier@free.fr>
Date: Tue, 11 Oct 2011 11:45:33 +0000
Subject: libc: fix daylight saving time handling

The algorithm computing daylight saving time incorrectly adds a day for
each month after January for leap years. The clock shift from/to DST can
be delayed if the last Sunday of a transition month is exactly seven
days before the first of the following month.

This change adds a day for the February month only.

Signed-off-by: Guillaume Bourcier <guillaumebourcier@free.fr>
Signed-off-by: Richard Braun <rbraun@sceen.net>
Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
---
(limited to 'libc/misc/time/time.c')

diff --git a/libc/misc/time/time.c b/libc/misc/time/time.c
index 19d68e1..8e2ebf1 100644
--- libc/misc/time/time.c
+++ libc/misc/time/time.c
@@ -707,7 +707,7 @@ static int tm_isdst(register const struct tm *__restrict ptm,
 					++day;
 				}
 				monlen = 31 + day_cor[r->month -1] - day_cor[r->month];
-				if (isleap && (r->month > 1)) {
+				if (isleap && (r->month == 2)) {
 					++monlen;
 				}
 				/* Wweekday (0 is Sunday) of 1st of the month
--
cgit v0.9.0.1-2-gef13
