Mercurial > emacs
diff src/keymap.c @ 30030:94dcb1b07998
(get_keyelt): Temporarily inhibit GC while evaluating
a menu filter.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Tue, 04 Jul 2000 12:07:36 +0000 |
parents | 0c77254c90b8 |
children | 784ef95b020b |
line wrap: on
line diff
--- a/src/keymap.c Tue Jul 04 11:27:14 2000 +0000 +++ b/src/keymap.c Tue Jul 04 12:07:36 2000 +0000 @@ -592,14 +592,18 @@ /* 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; } }