]> git.eshelyaron.com Git - emacs.git/commitdiff
Refer to bytecode constant vectors (Bug#33014)
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 31 Oct 2018 04:14:10 +0000 (21:14 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 31 Oct 2018 04:17:33 +0000 (21:17 -0700)
Backport from master.
* src/bytecode.c (exec_byte_code): Save VECTOR into stack slot
so that it survives GC.  The stack slot was otherwise unused,
so this doesn’t cost us memory, only a store insn.

src/bytecode.c

index e51f9095b367ac7741a846d7accc5768f4e9d8e9..538cd4f3ca7d02d7d4a0d64ec8f1a9e60643eb5a 100644 (file)
@@ -367,6 +367,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
   SAFE_ALLOCA_LISP_EXTRA (stack_base, stack_items, bytestr_length);
   Lisp_Object *stack_lim = stack_base + stack_items;
   Lisp_Object *top = stack_base;
+  *top = vector; /* Ensure VECTOR survives GC (Bug#33014).  */
   memcpy (stack_lim, SDATA (bytestr), bytestr_length);
   void *void_stack_lim = stack_lim;
   unsigned char const *bytestr_data = void_stack_lim;