[2/2] Fix mktime localtime offset confusion
Commit Message
[BZ #23603]
* include/time.h (__mktime_internal): The localtime offset is now
of type long int instead of time_t. This is the longstanding type
in glibc, and it is more than enough to represent difference
between localtime and gmtime even if it is 32 bits and time_t is
64. Changing it now will let us avoid an unnecessary change when
time_t is widened to 64 bits on 32-bit platforms.
* time/mktime-internal.h (mktime_offset_t): Now long int.
---
ChangeLog | 10 ++++++++++
include/time.h | 4 ++--
time/mktime-internal.h | 2 +-
3 files changed, 13 insertions(+), 3 deletions(-)
@@ -1,5 +1,15 @@
2018-09-09 Paul Eggert <eggert@cs.ucla.edu>
+ Fix mktime localtime offset confusion
+ [BZ #23603]
+ * include/time.h (__mktime_internal): The localtime offset is now
+ of type long int instead of time_t. This is the longstanding type
+ in glibc, and it is more than enough to represent difference
+ between localtime and gmtime even if it is 32 bits and time_t is
+ 64. Changing it now will let us avoid an unnecessary change when
+ time_t is widened to 64 bits on 32-bit platforms.
+ * time/mktime-internal.h (mktime_offset_t): Now long int.
+
Merge mktime, timegm from upstream Gnulib
[BZ #23603][BZ #16346]
This fixes some obscure problems with integer overflow.
@@ -55,11 +55,11 @@ extern void __tz_compute (time_t timer, struct tm *tm, int use_localtime)
/* Subroutine of `mktime'. Return the `time_t' representation of TP and
normalize TP, given that a `struct tm *' maps to a `time_t' as performed
- by FUNC. Keep track of next guess for time_t offset in *OFFSET. */
+ by FUNC. Record next guess for localtime-gmtime offset in *OFFSET. */
extern time_t __mktime_internal (struct tm *__tp,
struct tm *(*__func) (const time_t *,
struct tm *),
- time_t *__offset) attribute_hidden;
+ long int *__offset) attribute_hidden;
extern struct tm *__localtime_r (const time_t *__timer,
struct tm *__tp) attribute_hidden;
@@ -1 +1 @@
-typedef time_t mktime_offset_t;
+typedef long int mktime_offset_t;