Here is a patch for Bug#550170, "emacs23: does not start, stops after
printing Wrong type argument: keymapp, ("DEAD" . 17614028)", against the
Emacs 23.1 source tree.  It's already in the Emacs upstream repository.

diff -c /home/cyd/pretest/emacs-23.1/src/xterm.c\~ /home/cyd/pretest/emacs-23.1/src/xterm.c
*** /home/cyd/pretest/emacs-23.1/src/xterm.c~	2010-01-13 15:55:10.000000000 -0500
--- /home/cyd/pretest/emacs-23.1/src/xterm.c	2010-01-13 15:55:22.000000000 -0500
***************
*** 10233,10245 ****
  	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;
  	    terminal->next_terminal = terminal_list;
   	    terminal_list = terminal;
  	  }
--- 10233,10248 ----
  	if (!EQ (XSYMBOL (Qvendor_specific_keysyms)->function, Qunbound))
  	  {
  	    char *vendor = ServerVendor (dpy);
! 	    /* 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;
  	  }

Diff finished.  Wed Jan 13 15:55:25 2010

Reply via email to