浏览代码

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.
A. Wilcox 6 年之前
父节点
当前提交
92c52644e0
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      src/time/__tz.c

+ 1 - 1
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);