mirror of git://sourceware.org/git/glibc.git
(tz_compute): If time to switch to DST is later in the year switch back in the next year.
This commit is contained in:
parent
a825f8e844
commit
896ebd6bf6
15
time/tzset.c
15
time/tzset.c
|
|
@ -517,9 +517,20 @@ tz_compute (timer, tm)
|
||||||
time_t timer;
|
time_t timer;
|
||||||
const struct tm *tm;
|
const struct tm *tm;
|
||||||
{
|
{
|
||||||
if (! compute_change (&tz_rules[0], 1900 + tm->tm_year) ||
|
if (! compute_change (&tz_rules[0], 1900 + tm->tm_year))
|
||||||
! compute_change (&tz_rules[1], 1900 + tm->tm_year))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
/* We have to distinguish between northern and southern hemisphere.
|
||||||
|
For the later the daylight saving time ends in the next year. */
|
||||||
|
if (tz_rules[0].change < tz_rules[1].change)
|
||||||
|
{
|
||||||
|
if (! compute_change (&tz_rules[1], 1900 + tm->tm_year))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (! compute_change (&tz_rules[1], 1900 + tm->tm_year + 1))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
__daylight = tz_rules[0].offset != tz_rules[1].offset;
|
__daylight = tz_rules[0].offset != tz_rules[1].offset;
|
||||||
__timezone = -tz_rules[0].offset;
|
__timezone = -tz_rules[0].offset;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue