]> git.eshelyaron.com Git - emacs.git/commitdiff
(time-equal-p nil X) returns nil
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 1 Aug 2022 07:38:32 +0000 (00:38 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 1 Aug 2022 08:17:13 +0000 (01:17 -0700)
* src/timefns.c (Ftime_equal_p): nil compares unequal to non-nil.

doc/lispref/os.texi
src/timefns.c

index 2b49818ed330ab482c21495291ce639f77c7b95b..5fb34fb9b66e4da3094e6df3547ba6101a8749ff 100644 (file)
@@ -2067,7 +2067,12 @@ This returns @code{t} if the time value @var{t1} is less than the time value
 
 @defun time-equal-p t1 t2
 This returns @code{t} if the two time values @var{t1} and @var{t2} are
-equal.
+equal.  The result is @code{nil} if either argument is a NaN.
+For the purpose of comparison, a @code{nil} argument represents the
+current time with infinite resolution, so this function returns
+@code{nil} if one argument is @code{nil} and the other is not, and
+callers can therefore use @code{nil} to represent an unknown time
+value that does not equal any timestamp.
 @end defun
 
 @defun time-subtract t1 t2
index 9df50eaecc3d21572ae8c3a1eb3e2cd48160e1b8..25bfda513c21759f0e4b7edf68ce2819241f0d6d 100644 (file)
@@ -1258,7 +1258,9 @@ DEFUN ("time-equal-p", Ftime_equal_p, Stime_equal_p, 2, 2, 0,
 See `format-time-string' for the various forms of a time value.  */)
   (Lisp_Object a, Lisp_Object b)
 {
-  return time_cmp (a, b) == 0 ? Qt : Qnil;
+  /* A nil arg compares unequal to a non-nil arg.  This also saves the
+     expense of current_timespec if either arg is nil.  */
+  return NILP (a) == NILP (b) && time_cmp (a, b) == 0 ? Qt : Qnil;
 }
 \f