From: Stefan Monnier Date: Fri, 30 Jan 2015 21:00:29 +0000 (-0500) Subject: * lisp/emacs-lisp/backquote.el: Fix bug with unoptimized exp. X-Git-Tag: emacs-25.0.90~2572^2~6 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d5e3922e08587e7eb9e5aec2e9f84cbda405f857;p=emacs.git * lisp/emacs-lisp/backquote.el: Fix bug with unoptimized exp. Fixes: debbugs:19734 * lisp/emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s' since it may be "equivalent" in some sense, yet different. * test/automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index eac2e44ee5a..3724388dfda 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2015-01-30 Stefan Monnier + + * emacs-lisp/backquote.el (backquote-delay-process): Don't reuse `s' + since it may be "equivalent" in some sense, yet different (bug#19734). + 2015-01-30 Oleh Krehel * outline.el (outline-font-lock-face): Add docstring. diff --git a/lisp/emacs-lisp/backquote.el b/lisp/emacs-lisp/backquote.el index 082955e0823..d5cdca2b1b5 100644 --- a/lisp/emacs-lisp/backquote.el +++ b/lisp/emacs-lisp/backquote.el @@ -120,9 +120,7 @@ Vectors work just like lists. Nested backquotes are permitted." This simply recurses through the body." (let ((exp (backquote-listify (list (cons 0 (list 'quote (car s)))) (backquote-process (cdr s) level)))) - (if (eq (car-safe exp) 'quote) - (cons 0 (list 'quote s)) - (cons 1 exp)))) + (cons (if (eq (car-safe exp) 'quote) 0 1) exp))) (defun backquote-process (s &optional level) "Process the body of a backquote. diff --git a/test/ChangeLog b/test/ChangeLog index 3ae980755a9..8e4fdb884a1 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +2015-01-30 Stefan Monnier + + * automated/core-elisp-tests.el (core-elisp-tests-3-backquote): New test. + 2015-01-28 Fabián Ezequiel Gallina * automated/python-tests.el (python-indent-pep8-1) diff --git a/test/automated/core-elisp-tests.el b/test/automated/core-elisp-tests.el index 1b76c767b95..c31ecef4a32 100644 --- a/test/automated/core-elisp-tests.el +++ b/test/automated/core-elisp-tests.el @@ -24,7 +24,7 @@ ;;; Code: -(ert-deftest core-elisp-tests () +(ert-deftest core-elisp-tests-1-defvar-in-let () "Test some core Elisp rules." (with-temp-buffer ;; Check that when defvar is run within a let-binding, the toplevel default @@ -36,7 +36,7 @@ c-e-x) '(1 2))))) -(ert-deftest core-elisp-test-window-configurations () +(ert-deftest core-elisp-tests-2-window-configurations () "Test properties of window-configurations." (let ((wc (current-window-configuration))) (with-current-buffer (window-buffer (frame-selected-window)) @@ -45,5 +45,8 @@ (set-window-configuration wc) (should (or (not mark-active) (mark))))) +(ert-deftest core-elisp-tests-3-backquote () + (should (eq 3 (eval ``,,'(+ 1 2))))) + (provide 'core-elisp-tests) ;;; core-elisp-tests.el ends here