Restore call to byte-run-strip-symbol-positions in byte-compile-out

Also increment a loop counter.  This should fix bug #54248.

* lisp/emacs-lisp/byte-run.el (byte-run--strip-vector/record): increment the
loop counter 'i' in the main loop.

* lisp/emacs-lisp/bytecomp.el (byte-compile-out): call
byte-run-strip-symbol-positions on operands which are one-element lists.
This commit is contained in:
Alan Mackenzie 2022-03-06 13:37:30 +00:00
parent 6eeab90632
commit 68cdb95019
2 changed files with 7 additions and 1 deletions

View file

@ -80,7 +80,8 @@ This is done by destructively modifying ARG. Return ARG."
((consp elt)
(byte-run--strip-list elt))
((or (vectorp elt) (recordp elt))
(byte-run--strip-vector/record elt))))))
(byte-run--strip-vector/record elt)))
(setq i (1+ i)))))
arg))
(defalias 'byte-run-strip-symbol-positions

View file

@ -5108,6 +5108,11 @@ OP and OPERAND are as passed to `byte-compile-out'."
(- 1 operand))))
(defun byte-compile-out (op &optional operand)
"Push the operation onto `byte-compile-output'.
OP is an opcode, a symbol. OPERAND is either nil or a number or
a one-element list of a lisp form."
(when (and (consp operand) (null (cdr operand)))
(setq operand (byte-run-strip-symbol-positions operand)))
(push (cons op operand) byte-compile-output)
(if (eq op 'byte-return)
;; This is actually an unnecessary case, because there should be no