]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix return type of make_time.
authorPhilipp Stephani <phst@google.com>
Wed, 24 Apr 2019 11:17:53 +0000 (13:17 +0200)
committerPhilipp Stephani <phst@google.com>
Wed, 24 Apr 2019 11:17:53 +0000 (13:17 +0200)
make_time is documented to return a (TICKS . HZ) pair, so we can’t use
make_lisp_time.  Introduce a new conversion function instead.

* src/emacs-module.c (module_make_time): Use timespec_to_lisp to
correct return type.

* src/timefns.c (timespec_to_lisp): New function.
(make_lisp_time): Use it.

* test/src/emacs-module-tests.el (mod-test-add-nanosecond/valid):
Check return type.

src/emacs-module.c
src/systime.h
src/timefns.c
test/src/emacs-module-tests.el

index e203ce1d34812628e7c4273080cd9fb94941cde2..41ce9ef03e4ac960105535c59cff8bf1e7b40d96 100644 (file)
@@ -753,7 +753,7 @@ static emacs_value
 module_make_time (emacs_env *env, struct timespec time)
 {
   MODULE_FUNCTION_BEGIN (NULL);
-  return lisp_to_value (env, make_lisp_time (time));
+  return lisp_to_value (env, timespec_to_lisp (time));
 }
 
 static void
index 89af0c5e3df3795fc312e367ef3798cdabe110da..125b2f1385e8a363776b1f0eb3339b24fbfb3d2c 100644 (file)
@@ -89,6 +89,7 @@ struct lisp_time
 /* defined in timefns.c */
 extern struct timeval make_timeval (struct timespec) ATTRIBUTE_CONST;
 extern Lisp_Object make_lisp_time (struct timespec);
+extern Lisp_Object timespec_to_lisp (struct timespec);
 extern bool list4_to_timespec (Lisp_Object, Lisp_Object, Lisp_Object,
                               Lisp_Object, struct timespec *);
 extern struct timespec lisp_time_argument (Lisp_Object);
index cb953d1b4ceea56b915c3756a7ba7a0ac39ef763..71280aea06a28c1b6b5685eff1c38965154e84bd 100644 (file)
@@ -528,7 +528,14 @@ make_lisp_time (struct timespec t)
                    make_fixnum (ns / 1000), make_fixnum (ns % 1000 * 1000));
     }
   else
-    return Fcons (timespec_ticks (t), timespec_hz);
+    return timespec_to_lisp (t);
+}
+
+/* Return (TICKS . HZ) for time T.  */
+struct Lisp_Object
+timespec_to_lisp (struct timespec t)
+{
+  return Fcons (timespec_ticks (t), timespec_hz);
 }
 
 /* Convert T to a Lisp timestamp.  FORM specifies the timestamp format.  */
index 78f238140da148bbad7e52ce59cefedab7daa9e4..9eb38cd454876feb4b4606840c762f9796842287 100644 (file)
@@ -326,8 +326,12 @@ Interactively, you can try hitting \\[keyboard-quit] to quit."
                   ;; New (TICKS . HZ) format.
                   '(123456789 . 1000000000)))
     (ert-info ((format "input: %s" input))
-      (should (time-equal-p (mod-test-add-nanosecond input)
-                            (time-add input '(0 0 0 1000)))))))
+      (let ((result (mod-test-add-nanosecond input)))
+        (should (consp result))
+        (should (integerp (car result)))
+        (should (integerp (cdr result)))
+        (should (cl-plusp (cdr result)))
+        (should (time-equal-p result (time-add input '(0 0 0 1000))))))))
 
 (ert-deftest mod-test-add-nanosecond/nil ()
   (should (<= (float-time (mod-test-add-nanosecond nil))