+2010-01-13 Chong Yidong <cyd@stupidchicken.com>
+
+ * xterm.c (x_term_init): Avoid garbage-collecting the new terminal
+ during call to vendor-specific-keysyms (Bug#5365).
+
2010-01-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* keyboard.c (input_available_signal) [SYNC_INPUT]:
if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
{
char *vendor = ServerVendor (dpy);
- /* Temporarily hide the partially initialized terminal */
+ /* Temporarily hide the partially initialized terminal,
+ but make sure it doesn't get garbage collected. */
+ int count = inhibit_garbage_collection ();
terminal_list = terminal->next_terminal;
UNBLOCK_INPUT;
terminal->kboard->Vsystem_key_alist
= call1 (Qvendor_specific_keysyms,
vendor ? build_string (vendor) : empty_unibyte_string);
BLOCK_INPUT;
+ unbind_to (count, Qnil);
terminal->next_terminal = terminal_list;
terminal_list = terminal;
}