From 5365473301185cda5276645287697da3f807d705 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Tue, 4 Jul 2000 12:08:25 +0000 Subject: [PATCH] (get_keyelt): Temporarily inhibit GC while evaluating a menu filter. --- src/ChangeLog | 5 +++++ src/keymap.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 82730f06721..f3f521aa47c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2000-07-04 Gerd Moellmann + + * keymap.c (get_keyelt): Temporarily inhibit GC while evaluating + a menu filter. + 2000-07-04 Kenichi Handa * composite.h (make_composition_value_copy): Extern it. diff --git a/src/keymap.c b/src/keymap.c index 11d8ab860a5..414de7b14a3 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -592,14 +592,18 @@ get_keyelt (object, autoload) /* If there's a `:filter FILTER', apply FILTER to the menu-item's definition to get the real definition to - use. */ + use. Temporarily inhibit GC while evaluating FILTER, + because not functions calling get_keyelt are prepared + for a GC. */ for (; CONSP (tem) && CONSP (XCDR (tem)); tem = XCDR (tem)) if (EQ (XCAR (tem), QCfilter)) { + int count = inhibit_garbage_collection (); Lisp_Object filter; filter = XCAR (XCDR (tem)); filter = list2 (filter, list2 (Qquote, object)); object = menu_item_eval_property (filter); + unbind_to (count, Qnil); break; } } -- 2.39.2