summaryrefslogtreecommitdiff
path: root/src/keyboard.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2020-09-03 12:10:26 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2020-09-03 12:15:09 -0700
commitc47be1b8440883b07b6cf918235a13b65e3d7be6 (patch)
tree8bc1f190dc4d5792d8935425693c5650f9e0253c /src/keyboard.c
parentc449a00aa51185486d76ebf602d84e189af702c0 (diff)
downloademacs-c47be1b8440883b07b6cf918235a13b65e3d7be6.tar.gz
Revert recent GC-related changes (Bug#43152)
* src/alloc.c (live_string_holding, live_cons_holding) (live_symbol_holding, live_large_vector_holding) (live_small_vector_holding): Go back to old approach of treating every would-be pointer to any byte in the object (though not to just past the object end) as addressing the object. (live_float_p): Require that the would-be float point to the start of the Lisp_Float, and not anywhere else. (live_vector_pointer, live_float_holding, mark_objects): Remove. All uses removed. (mark_maybe_object, mark_maybe_objects): Bring back these functions. * src/lisp.h (SAFE_ALLOCA_LISP_EXTRA): Do not clear the new slots, as they're now checked via mark_maybe_objects, not via mark_objects.
Diffstat (limited to 'src/keyboard.c')
-rw-r--r--src/keyboard.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index 590d183c4c6..5fa58abce1d 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -12475,11 +12475,13 @@ keys_of_keyboard (void)
void
mark_kboards (void)
{
- for (KBOARD *kb = all_kboards; kb; kb = kb->next_kboard)
+ KBOARD *kb;
+ Lisp_Object *p;
+ for (kb = all_kboards; kb; kb = kb->next_kboard)
{
if (kb->kbd_macro_buffer)
- mark_objects (kb->kbd_macro_buffer,
- kb->kbd_macro_ptr - kb->kbd_macro_buffer);
+ for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++)
+ mark_object (*p);
mark_object (KVAR (kb, Voverriding_terminal_local_map));
mark_object (KVAR (kb, Vlast_command));
mark_object (KVAR (kb, Vreal_last_command));