summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2018-10-30 21:14:10 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2018-10-30 21:17:33 -0700
commit1ad2903a48b682985a2bd0709ec05f67a1351a8e (patch)
tree110cc95a934fbb76aeb64eceeed4775d209aac4c
parenteb903d8f20ab0c31daa27a08b0acfd30115c7b5e (diff)
downloademacs-1ad2903a48b682985a2bd0709ec05f67a1351a8e.tar.gz
Refer to bytecode constant vectors (Bug#33014)
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.
-rw-r--r--src/bytecode.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index e51f9095b36..538cd4f3ca7 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -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;