summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/timefns.c5
-rw-r--r--test/src/timefns-tests.el6
2 files changed, 9 insertions, 2 deletions
diff --git a/src/timefns.c b/src/timefns.c
index 5005c73b7fc..7b5af6a5d24 100644
--- a/src/timefns.c
+++ b/src/timefns.c
@@ -1488,10 +1488,11 @@ usage: (encode-time &optional TIME FORM &rest OBSOLESCENT-ARGUMENTS) */)
tm.tm_mon = check_tm_member (XCAR (a), 1); a = XCDR (a);
tm.tm_year = check_tm_member (XCAR (a), TM_YEAR_BASE); a = XCDR (a);
a = XCDR (a);
- if (SYMBOLP (XCAR (a)))
- tm.tm_isdst = !NILP (XCAR (a));
+ Lisp_Object dstflag = XCAR (a);
a = XCDR (a);
zone = XCAR (a);
+ if (SYMBOLP (dstflag) && !FIXNUMP (zone) && !CONSP (zone))
+ tm.tm_isdst = !NILP (dstflag);
}
else if (nargs < 6)
xsignal2 (Qwrong_number_of_arguments, Qencode_time, make_fixnum (nargs));
diff --git a/test/src/timefns-tests.el b/test/src/timefns-tests.el
index 5c858ef3bd8..2c90af757f0 100644
--- a/test/src/timefns-tests.el
+++ b/test/src/timefns-tests.el
@@ -142,3 +142,9 @@
(< 0.99 (/ x y) 1.01)
(< 0.99 (/ (- (float-time a)) (float-time b))
1.01))))))))
+
+(ert-deftest encode-time-dst-numeric-zone ()
+ "Check for Bug#35502."
+ (should (time-equal-p
+ (encode-time '(29 31 17 30 4 2019 2 t 7200))
+ '(23752 27217))))