diff options
| author | Chong Yidong | 2010-01-05 07:04:04 -0700 |
|---|---|---|
| committer | Chong Yidong | 2010-01-05 07:04:04 -0700 |
| commit | 03f77f0a4470c967d6f4351d347ebedd8fb882bb (patch) | |
| tree | 8fe70cda78fe130ead16af67b9840343049edca1 /src | |
| parent | 69db641dfe32c50abb8319e6d1fb095bb143a5af (diff) | |
| download | emacs-03f77f0a4470c967d6f4351d347ebedd8fb882bb.tar.gz emacs-03f77f0a4470c967d6f4351d347ebedd8fb882bb.zip | |
* keyboard.c (read_key_sequence): Catch keyboard switch after
making a new tty frame (Bug#5095).
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/keyboard.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 147ac60fce4..77e80ed0536 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2010-01-05 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * keyboard.c (read_key_sequence): Catch keyboard switch after | ||
| 4 | making a new tty frame (Bug#5095). | ||
| 5 | |||
| 1 | 2010-01-05 Kenichi Handa <handa@m17n.org> | 6 | 2010-01-05 Kenichi Handa <handa@m17n.org> |
| 2 | 7 | ||
| 3 | * fontset.c (fontset_find_font): Fix getting the frame pointer. | 8 | * 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, | |||
| 9502 | key = read_char (NILP (prompt), nmaps, | 9502 | key = read_char (NILP (prompt), nmaps, |
| 9503 | (Lisp_Object *) submaps, last_nonmenu_event, | 9503 | (Lisp_Object *) submaps, last_nonmenu_event, |
| 9504 | &used_mouse_menu, NULL); | 9504 | &used_mouse_menu, NULL); |
| 9505 | if (INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */ | 9505 | if ((INTEGERP (key) && XINT (key) == -2) /* wrong_kboard_jmpbuf */ |
| 9506 | /* When switching to a new tty (with a new keyboard), | ||
| 9507 | read_char returns the new buffer, rather than -2 | ||
| 9508 | (Bug#5095). This is because `terminal-init-xterm' | ||
| 9509 | calls read-char, which eats the wrong_kboard_jmpbuf | ||
| 9510 | return. Any better way to fix this? -- cyd */ | ||
| 9511 | || (interrupted_kboard != current_kboard)) | ||
| 9506 | { | 9512 | { |
| 9507 | int found = 0; | 9513 | int found = 0; |
| 9508 | struct kboard *k; | 9514 | struct kboard *k; |