]> git.eshelyaron.com Git - emacs.git/commitdiff
Make recent timer changes more backwards-compatible
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 3 Sep 2021 08:40:21 +0000 (10:40 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 3 Sep 2021 08:40:21 +0000 (10:40 +0200)
* lisp/emacs-lisp/timer.el (timerp, timer-event-handler): Make
backwards-compatible with old .elc files that have their own
versions of `timer-create'd structures.

lisp/emacs-lisp/timer.el

index f7715109c827d6570c5da216afbeb66892f2afb7..5c658eba8031289476402ee78ebef7519aa38a95 100644 (file)
 
 (defun timerp (object)
   "Return t if OBJECT is a timer."
-  (and (vectorp object) (= (length object) 10)))
+  (and (vectorp object)
+       ;; Timers are now ten elements, but old .elc code may have
+       ;; shorter versions of `timer-create'.
+       (<= 9 (length object) 10)))
 
 (defsubst timer--check (timer)
   (or (timerp timer) (signal 'wrong-type-argument (list #'timerp timer))))
@@ -293,7 +296,8 @@ This function is called, by name, directly by the C code."
                                                  repeats)))))
               ;; If we want integral multiples, we have to recompute
               ;; the repetition.
-              (when (and (timer--integral-multiple timer)
+              (when (and (> (length timer) 9) ; Backwards compatible.
+                         (timer--integral-multiple timer)
                          (not (timer--idle-delay timer)))
                 (setf (timer--time timer)
                       (timer-next-integral-multiple-of-time