# HG changeset patch # User Richard M. Stallman # Date 720523667 0 # Node ID 50af75dfa70a2fe52bc56c46a14bf27f6531c384 # Parent 86202f01266d46ab10d74d8921e81873a7337054 (byte-compile-lambda): Don't compile the interactive spec if it is a call to `list'. diff -r 86202f01266d -r 50af75dfa70a lisp/emacs-lisp/bytecomp.el --- a/lisp/emacs-lisp/bytecomp.el Sat Oct 31 05:43:42 1992 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Sat Oct 31 09:27:47 1992 +0000 @@ -1659,12 +1659,19 @@ ;; Skip (interactive) if it is in front (the most usual location). (if (eq int (car body)) (setq body (cdr body))) - (cond ((cdr int) + (cond ((consp (cdr int)) (if (cdr (cdr int)) (byte-compile-warn "malformed interactive spec: %s" (prin1-to-string int))) - (setq int (list 'interactive (byte-compile-top-level - (nth 1 int)))))))) + ;; If the interactive spec is a call to `list', + ;; don't compile it, because `call-interactively' + ;; looks at the args of `list'. + (or (eq (car-safe (nth 1 int)) 'list) + (setq int (list 'interactive + (byte-compile-top-level (nth 1 int)))))) + ((cdr int) + (byte-compile-warn "malformed interactive spec: %s" + (prin1-to-string int)))))) (let ((compiled (byte-compile-top-level (cons 'progn body) nil 'lambda))) (if (and (eq 'byte-code (car-safe compiled)) (byte-compile-version-cond