summaryrefslogtreecommitdiff
path: root/time/mktime.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-09-10 18:59:03 +0000
committerJakub Jelinek <jakub@redhat.com>2006-09-10 18:59:03 +0000
commiteffe3e2d1a084fde8fae9b91febb28c97781f9e5 (patch)
tree97749ea80a323592d3d80f24627f9fcb8b8b7297 /time/mktime.c
parentb2adc86677d215d3d8071393d2a69357dd844821 (diff)
Updated to fedora-glibc-20060910T1832cvs/fedora-glibc-2_4_90-31
Diffstat (limited to 'time/mktime.c')
-rw-r--r--time/mktime.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/time/mktime.c b/time/mktime.c
index 5a326d1e79..8f00c72e09 100644
--- a/time/mktime.c
+++ b/time/mktime.c
@@ -1,7 +1,7 @@
/* Convert a `struct tm' to a time_t value.
- Copyright (C) 1993-1999, 2002-2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1993-1999, 2002-2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Paul Eggert (eggert@twinsun.com).
+ Contributed by Paul Eggert <eggert@twinsun.com>.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -216,10 +216,11 @@ guess_time_tm (long int year, long int yday, int hour, int min, int sec,
/* Overflow occurred one way or another. Return the nearest result
that is actually in range, except don't report a zero difference
if the actual difference is nonzero, as that would cause a false
- match. */
+ match; and don't oscillate between two values, as that would
+ confuse the spring-forward gap detector. */
return (*t < TIME_T_MIDPOINT
- ? TIME_T_MIN + (*t == TIME_T_MIN)
- : TIME_T_MAX - (*t == TIME_T_MAX));
+ ? (*t <= TIME_T_MIN + 1 ? *t + 1 : TIME_T_MIN)
+ : (TIME_T_MAX - 1 <= *t ? *t - 1 : TIME_T_MAX));
}
/* Use CONVERT to convert *T to a broken down time in *TP.