]> git.eshelyaron.com Git - emacs.git/commit
Fix `cond` miscompilation bug
authorMattias Engdegård <mattiase@acm.org>
Thu, 2 Mar 2023 08:56:59 +0000 (09:56 +0100)
committerMattias Engdegård <mattiase@acm.org>
Thu, 2 Mar 2023 14:47:26 +0000 (15:47 +0100)
commit828c49ae29fd318547d7bbe4e7fdc65da316e309
tree3859f77e26d13d7d760ec79b0ce1ab96ca3d77f6
parenta1d90e48bb0076e68592d6a6880c28b52e61d219
Fix `cond` miscompilation bug

This fixes a bug that miscompiled

  (cond ... C S1...Sn)

where S1...Sn are switch clauses (that can be compiled into a switch
op) and C a non-switch clause, by tucking on an extra copy of C at the
end.  This was a serious wrong-code bug when the condition of C had
side-effects; otherwise it was only a waste of time and space.

* lisp/emacs-lisp/bytecomp.el (byte-compile-cond): Fix.
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases):
Add test case.
lisp/emacs-lisp/bytecomp.el
test/lisp/emacs-lisp/bytecomp-tests.el