From c08045dafe3c44cd94a24b584e94a8dc6daae720 Mon Sep 17 00:00:00 2001 From: Serge Vakulenko Date: Sun, 25 Oct 2015 15:59:54 -0700 Subject: [PATCH] Fix bug in zoneinfo compiler. --- src/share/zoneinfo/Makefile | 2 +- src/share/zoneinfo/zic.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/share/zoneinfo/Makefile b/src/share/zoneinfo/Makefile index 980debc..f67b98a 100644 --- a/src/share/zoneinfo/Makefile +++ b/src/share/zoneinfo/Makefile @@ -41,7 +41,7 @@ MANDIR= ${DESTDIR}/man/cat8 all: tzfile.h zdump zic ${ZICMAN} ${ZDUMAN} install: zic $(DATA) $(MAN) - (umask 22; ./zic -d ${SHARDIR} $(DATA)) + (umask 22; ./zic -v -d ${SHARDIR} $(DATA)) install -c ${SHARDIR}/${LOCALTIME} ${DESTDIR}/etc/localtime # install -c $(ZICMAN) ${MANDIR}/${ZICMAN} # install -c $(ZDUMAN) ${MANDIR}/${ZDUMAN} diff --git a/src/share/zoneinfo/zic.c b/src/share/zoneinfo/zic.c index 9f1ce00..72c731f 100644 --- a/src/share/zoneinfo/zic.c +++ b/src/share/zoneinfo/zic.c @@ -459,9 +459,19 @@ setboundaries() max_time = ~(time_t) 0; } else { tt_signed = TRUE; - min_time = mktime(&zerotm); + for (;;) { + min_time = mktime(&zerotm); + if (min_time != -1) + break; + zerotm.tm_year++; + } zerotm.tm_year = TZ_MAX_TIMES/2 - 2; - max_time = mktime(&zerotm); + for (;;) { + max_time = mktime(&zerotm); + if (max_time != -1) + break; + zerotm.tm_year--; + } } min_year = TM_YEAR_BASE + gmtime(&min_time)->tm_year; max_year = TM_YEAR_BASE + gmtime(&max_time)->tm_year;