* localtime.cc (time2): Add workaround for spring gap problem. Add
explaining comment.
This commit is contained in:
parent
06391373b0
commit
7ce08eab6c
|
@ -1,3 +1,8 @@
|
||||||
|
2009-06-12 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* localtime.cc (time2): Add workaround for spring gap problem. Add
|
||||||
|
explaining comment.
|
||||||
|
|
||||||
2009-06-12 Corinna Vinschen <corinna@vinschen.de>
|
2009-06-12 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* Makefile.in (SUBLIBS): Add librt.a.
|
* Makefile.in (SUBLIBS): Add librt.a.
|
||||||
|
|
|
@ -1989,7 +1989,28 @@ time2(struct tm *tmp, void (*funcp) P((const time_t*, long, struct tm*)),
|
||||||
** If that fails, try with normalization of seconds.
|
** If that fails, try with normalization of seconds.
|
||||||
*/
|
*/
|
||||||
t = time2sub(tmp, funcp, offset, okayp, false);
|
t = time2sub(tmp, funcp, offset, okayp, false);
|
||||||
return *okayp ? t : time2sub(tmp, funcp, offset, okayp, true);
|
if (*okayp)
|
||||||
|
return t;
|
||||||
|
t = time2sub(tmp, funcp, offset, okayp, true);
|
||||||
|
if (*okayp)
|
||||||
|
return t;
|
||||||
|
/* Workaround for the spring gap problem which results in the
|
||||||
|
autoconf mktime usability test failing.
|
||||||
|
What we do here is this: The gap has 3600 seconds. If we
|
||||||
|
subtract 3600 from the tm_sec value and get a valid result,
|
||||||
|
then we can simply add 3600 to the return value and are done.
|
||||||
|
If the result is still not valid, the problem is not the
|
||||||
|
spring gap and we can give up. */
|
||||||
|
struct tm tmp2 = *tmp;
|
||||||
|
tmp2.tm_sec -= 3600;
|
||||||
|
t = time2sub(&tmp2, funcp, offset, okayp, true);
|
||||||
|
if (*okayp)
|
||||||
|
{
|
||||||
|
if (t + 3600 < t) /* Sanity check */
|
||||||
|
return WRONG;
|
||||||
|
return t + 3600;
|
||||||
|
}
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
static time_t
|
static time_t
|
||||||
|
|
Loading…
Reference in New Issue