From: Vibhav Pant Date: Sun, 5 Feb 2017 10:07:43 +0000 (+0530) Subject: bytecomp.el: Don't store non-keyword symbols in jump-tables. X-Git-Tag: emacs-26.0.90~866 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=44c95c58b26b7b9d75965a83930ec3d77ffae28f;p=emacs.git bytecomp.el: Don't store non-keyword symbols in jump-tables. * lisp/emacs-lisp/bytecomp.el (byte-compile-cond-valid-obj2-p) return nil when OBJ is a non-keyword symbol (i.e a variable), as the jump table can only be used when comparing variables with constant values. --- diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 53622a47d7a..b7852c57ebf 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -3971,11 +3971,13 @@ that suppresses all warnings during execution of BODY." (setq byte-compile--for-effect nil)) (defun byte-compile-cond-valid-obj2-p (obj) - (if (consp obj) - (and (eq (car obj) 'quote) - (= (length obj) 2) - (symbolp (cadr obj))) - t)) + (cond + ((consp obj) + (and (eq (car obj) 'quote) + (= (length obj) 2) + (symbolp (cadr obj)))) + ((symbolp obj) (keywordp obj)) + (t t))) (defun byte-compile-cond-vars (obj1 obj2) (or