]> git.eshelyaron.com Git - emacs.git/commitdiff
Restore call to byte-run-strip-symbol-positions in byte-compile-out
authorAlan Mackenzie <acm@muc.de>
Sun, 6 Mar 2022 13:37:30 +0000 (13:37 +0000)
committerAlan Mackenzie <acm@muc.de>
Sun, 6 Mar 2022 13:37:30 +0000 (13:37 +0000)
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.

lisp/emacs-lisp/byte-run.el
lisp/emacs-lisp/bytecomp.el

index d7a2d8cecaf08a23bb230f3b91994b8750fb7db4..384e8cba88f334133642268cc83c6f7b1f27d84e 100644 (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
index 432fd2ad9c5b8c5a84e2af87b750cc9901a5103a..9be44a8d5af45d04409c6e59f56f3c876b402a24 100644 (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