about summary refs log tree commit diff
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2018-08-27 18:17:20 -0500
committerRich Felker <dalias@aerifal.cx>2018-08-27 19:55:56 -0400
commit92c52644e04ac754b1b282a9d33d033e04e1399e (patch)
tree34d91036da7ad8fb03ac87f6d61c81a0535f45a8
parentc06c1eb6610b478a06df8116aefc975f376760f8 (diff)
downloadmusl-92c52644e04ac754b1b282a9d33d033e04e1399e.tar.gz
musl-92c52644e04ac754b1b282a9d33d033e04e1399e.tar.xz
musl-92c52644e04ac754b1b282a9d33d033e04e1399e.zip
time: fix incorrect DST offset when using POSIX timezones without DST
This manifests itself in mktime if tm_isdst = 1 and the current TZ= is
a POSIX timezone specification. mktime would see that tm_isdst was set
to 0 by __secs_to_zone, and subtract 'oppoff' (dst_off) - gmtoff from
the resultant time. This meant that mktime returned a time that was
exactly double the GMT offset of the desired timezone when tm_isdst
was = 1.
-rw-r--r--src/time/__tz.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/time/__tz.c b/src/time/__tz.c
index 1dbb0b8f..814edcdf 100644
--- a/src/time/__tz.c
+++ b/src/time/__tz.c
@@ -230,7 +230,7 @@ static void do_tzset()
 			dst_off = __timezone - 3600;
 	} else {
 		__daylight = 0;
-		dst_off = 0;
+		dst_off = __timezone;
 	}
 
 	if (*s == ',') s++, getrule(&s, r0);