summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Stephani <phst@google.com>2019-04-24 13:17:53 +0200
committerPhilipp Stephani <phst@google.com>2019-04-24 13:17:53 +0200
commit534c33cf375182c97291d2dd242f936df5953321 (patch)
treea36d85bbc81ad93397bd9f81e962274ccb08f7ef /src
parente290a7d1730c99010272bbff7f497c3041cef46d (diff)
downloademacs-534c33cf375182c97291d2dd242f936df5953321.tar.gz
Fix return type of make_time.
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.
Diffstat (limited to 'src')
-rw-r--r--src/emacs-module.c2
-rw-r--r--src/systime.h1
-rw-r--r--src/timefns.c9
3 files changed, 10 insertions, 2 deletions
diff --git a/src/emacs-module.c b/src/emacs-module.c
index e203ce1d348..41ce9ef03e4 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -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
diff --git a/src/systime.h b/src/systime.h
index 89af0c5e3df..125b2f1385e 100644
--- a/src/systime.h
+++ b/src/systime.h
@@ -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);
diff --git a/src/timefns.c b/src/timefns.c
index cb953d1b4ce..71280aea06a 100644
--- a/src/timefns.c
+++ b/src/timefns.c
@@ -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. */