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:
parent
6eeab90632
commit
68cdb95019
2 changed files with 7 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue