bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#5365: 23.1.91; Wrong type argument: keymapp, ("DEAD" . 35215396)


From: Chong Yidong
Subject: bug#5365: 23.1.91; Wrong type argument: keymapp, ("DEAD" . 35215396)
Date: Wed, 13 Jan 2010 15:53:40 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.91 (gnu/linux)

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> Even if that's the case, I'm not sure why Vlocal_function_key_map is
>>> getting garbage-collected, tho.
>
>> OK, I see one place where this could happen.  In xterm.c:10207:
>
> terminal-> kboard = (KBOARD *) xmalloc (sizeof (KBOARD));
>>     ...
>>     if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
>>       {
>>         char *vendor = ServerVendor (dpy);
>>         /* Temporarily hide the partially initialized terminal */
>>         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;
>>         ...
>>       }
>
> Indeed, that looks risky.  Why don't we add this new kboard to the
> all_kboards list before calling Qvendor_specific_keysyms?

We'd still have to protect the terminal object.  I've checked in a fix
that uses inhibit_garbage_collection, but if you'd like to replace this
with a more elegant fix, go ahead.

Since it appears to fix the problem (as far as Sven can tell), I'll
close this bug.  I'll forward the patch to the Debian bts too.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]