From: Stefan Monnier Date: Tue, 27 May 2014 14:56:03 +0000 (-0400) Subject: * lisp/emacs-lisp/byte-opt.el (byte-optimize-binary-predicate): Don't assume X-Git-Tag: emacs-24.3.92~156 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=53bc1e2982f6ac29a75ce63bc9a35bb19e0f58e1;p=emacs.git * lisp/emacs-lisp/byte-opt.el (byte-optimize-binary-predicate): Don't assume there can't be more than 2 arguments. Fixes: debbugs:17584 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1b886000014..fe34854ab53 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-05-27 Stefan Monnier + + * emacs-lisp/byte-opt.el (byte-optimize-binary-predicate): Don't assume + there can't be more than 2 arguments (bug#17584). + 2014-05-27 Glenn Morris * simple.el (filter-buffer-substring-functions) diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index b1e06410da4..fe6640cc51e 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -859,14 +859,16 @@ (defun byte-optimize-binary-predicate (form) - (if (macroexp-const-p (nth 1 form)) - (if (macroexp-const-p (nth 2 form)) - (condition-case () - (list 'quote (eval form)) - (error form)) - ;; This can enable some lapcode optimizations. - (list (car form) (nth 2 form) (nth 1 form))) - form)) + (cond + ((or (not (macroexp-const-p (nth 1 form))) + (nthcdr 3 form)) ;; In case there are more than 2 args. + form) + ((macroexp-const-p (nth 2 form)) + (condition-case () + (list 'quote (eval form)) + (error form))) + (t ;; This can enable some lapcode optimizations. + (list (car form) (nth 2 form) (nth 1 form))))) (defun byte-optimize-predicate (form) (let ((ok t)