diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/mktime.c | 12 |
2 files changed, 12 insertions, 5 deletions
@@ -1,11 +1,16 @@ 2016-05-01 Paul Eggert <eggert@cs.ucla.edu> + mktime: simplify DEBUG_MKTIME + * lib/mktime.c (DEBUG_MKTIME): Define to 0 if not defined. + Simplify later usage accordingly. + Port mktime_internal offset to unsigned time_t This avoids some assumptions about wraparound arithmetic on signed integer overflow. * lib/mktime-internal.h (mktime_offset_t): New type. (mktime_internal): Use it in decl. * lib/mktime.c, lib/timegm.c (mktime_offset_t) [_LIBC]: New type. + * lib/mktime.c (__mktime_internal, localtime_offset): * lib/timegm.c (timegm): Use it. * m4/mktime.m4 (gl_TIME_T_IS_SIGNED): New macro. diff --git a/lib/mktime.c b/lib/mktime.c index 4f4f0bf34c..ccc6c5149f 100644 --- a/lib/mktime.c +++ b/lib/mktime.c @@ -17,9 +17,11 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -/* Define this to have a standalone program to test this implementation of +/* Define this to 1 to have a standalone program to test this implementation of mktime. */ -/* #define DEBUG_MKTIME 1 */ +#ifndef DEBUG_MKTIME +# define DEBUG_MKTIME 0 +#endif #ifndef _LIBC # include <config.h> @@ -40,13 +42,13 @@ #include <intprops.h> #include <verify.h> -#if defined DEBUG_MKTIME && DEBUG_MKTIME +#if DEBUG_MKTIME # include <stdio.h> # include <stdlib.h> /* Make it work even if the system's libc has its own mktime routine. */ # undef mktime # define mktime my_mktime -#endif /* DEBUG_MKTIME */ +#endif /* Some of the code in this file assumes that signed integer overflow silently wraps around. This assumption can't easily be programmed @@ -545,7 +547,7 @@ libc_hidden_def (mktime) libc_hidden_weak (timelocal) #endif -#if defined DEBUG_MKTIME && DEBUG_MKTIME +#if DEBUG_MKTIME static int not_equal_tm (const struct tm *a, const struct tm *b) |