]> git.eshelyaron.com Git - emacs.git/commitdiff
Preserve match data in 'kbd'
authorMattias Engdegård <mattiase@acm.org>
Wed, 29 Jul 2020 15:47:32 +0000 (17:47 +0200)
committerMattias Engdegård <mattiase@acm.org>
Wed, 29 Jul 2020 15:48:53 +0000 (17:48 +0200)
* lisp/subr.el (kbd): Preserve match data since this function is
declared pure (see discussion in bug#42147).

lisp/subr.el

index 10c37e94134730b1c2b275fc495ee78521bd264b..3c8dbd161469100eee6ba93d30712c827ace051b 100644 (file)
@@ -893,8 +893,9 @@ This is the same format used for saving keyboard macros (see
 For an approximate inverse of this, see `key-description'."
   ;; Don't use a defalias, since the `pure' property is true only for
   ;; the calling convention of `kbd'.
-  (read-kbd-macro keys))
-(put 'kbd 'pure t)
+  (declare (pure t))
+  ;; A pure function is expected to preserve the match data.
+  (save-match-data (read-kbd-macro keys)))
 
 (defun undefined ()
   "Beep to tell the user this binding is undefined."