* 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>
|
||||
|
||||
* 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.
|
||||
*/
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue