From: Chong Yidong Date: Tue, 5 Jan 2010 14:04:04 +0000 (-0700) Subject: * keyboard.c (read_key_sequence): Catch keyboard switch after X-Git-Tag: emacs-pretest-23.1.92~87^2 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=03f77f0a4470c967d6f4351d347ebedd8fb882bb;p=emacs.git * keyboard.c (read_key_sequence): Catch keyboard switch after making a new tty frame (Bug#5095). --- diff --git a/src/ChangeLog b/src/ChangeLog index 147ac60fce4..77e80ed0536 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2010-01-05 Chong Yidong + + * keyboard.c (read_key_sequence): Catch keyboard switch after + making a new tty frame (Bug#5095). + 2010-01-05 Kenichi Handa * fontset.c (fontset_find_font): Fix getting the frame pointer. diff --git a/src/keyboard.c b/src/keyboard.c index 7a137ea0dca..13d13cd3276 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -9502,7 +9502,13 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last, key = read_char (NILP (prompt), nmaps, (Lisp_Object *) submaps, last_nonmenu_event, &used_mouse_menu, NULL); - if (INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */ + if ((INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */ + /* When switching to a new tty (with a new keyboard), + read_char returns the new buffer, rather than -2 + (Bug#5095). This is because `terminal-init-xterm' + calls read-char, which eats the wrong_kboard_jmpbuf + return. Any better way to fix this? -- cyd */ + || (interrupted_kboard != current_kboard)) { int found = 0; struct kboard *k;