emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 325f51c: Fix decode-time/encode-time roundtrip on m


From: Paul Eggert
Subject: [Emacs-diffs] master 325f51c: Fix decode-time/encode-time roundtrip on macOS
Date: Tue, 30 Apr 2019 13:47:22 -0400 (EDT)

branch: master
commit 325f51c84d9ad4d9776784bd324b347ffe4fe51b
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Fix decode-time/encode-time roundtrip on macOS
    
    * src/timefns.c (Fencode_time): Ignore DST flag when the zone is
    numeric or is a cons, as the doc string says it’s ignored in that
    case, and not ignoring it causes encode-time to not invert
    decode-time on some platforms (Bug#35502).
    * test/src/timefns-tests.el (encode-time-dst-numeric-zone):
    New test.
---
 src/timefns.c             | 5 +++--
 test/src/timefns-tests.el | 6 ++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/timefns.c b/src/timefns.c
index 5005c73..7b5af6a 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 5c858ef..2c90af7 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))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]