diff options
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/keyboard.c | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 87133535e97..38af1d83a6d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2015-02-19 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * keyboard.c (read_char): Make sure this_single_command_key_start | ||
| 4 | is in sync with this_command_key_count, around the call to | ||
| 5 | input-method-function. (Bug#19774) | ||
| 6 | |||
| 1 | 2015-02-19 Fujii Hironori <fujii.hironori@gmail.com> (tiny change) | 7 | 2015-02-19 Fujii Hironori <fujii.hironori@gmail.com> (tiny change) |
| 2 | 8 | ||
| 3 | * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Pass the | 9 | * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Pass the |
diff --git a/src/keyboard.c b/src/keyboard.c index 4f6a4414a04..ab57553e7d3 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -3034,6 +3034,7 @@ read_char (int commandflag, Lisp_Object map, | |||
| 3034 | Lisp_Object keys; | 3034 | Lisp_Object keys; |
| 3035 | ptrdiff_t key_count; | 3035 | ptrdiff_t key_count; |
| 3036 | bool key_count_reset; | 3036 | bool key_count_reset; |
| 3037 | ptrdiff_t command_key_start; | ||
| 3037 | struct gcpro gcpro1; | 3038 | struct gcpro gcpro1; |
| 3038 | ptrdiff_t count = SPECPDL_INDEX (); | 3039 | ptrdiff_t count = SPECPDL_INDEX (); |
| 3039 | 3040 | ||
| @@ -3057,6 +3058,7 @@ read_char (int commandflag, Lisp_Object map, | |||
| 3057 | /* Save the this_command_keys status. */ | 3058 | /* Save the this_command_keys status. */ |
| 3058 | key_count = this_command_key_count; | 3059 | key_count = this_command_key_count; |
| 3059 | key_count_reset = this_command_key_count_reset; | 3060 | key_count_reset = this_command_key_count_reset; |
| 3061 | command_key_start = this_single_command_key_start; | ||
| 3060 | 3062 | ||
| 3061 | if (key_count > 0) | 3063 | if (key_count > 0) |
| 3062 | keys = Fcopy_sequence (this_command_keys); | 3064 | keys = Fcopy_sequence (this_command_keys); |
| @@ -3067,6 +3069,7 @@ read_char (int commandflag, Lisp_Object map, | |||
| 3067 | /* Clear out this_command_keys. */ | 3069 | /* Clear out this_command_keys. */ |
| 3068 | this_command_key_count = 0; | 3070 | this_command_key_count = 0; |
| 3069 | this_command_key_count_reset = 0; | 3071 | this_command_key_count_reset = 0; |
| 3072 | this_single_command_key_start = 0; | ||
| 3070 | 3073 | ||
| 3071 | /* Now wipe the echo area. */ | 3074 | /* Now wipe the echo area. */ |
| 3072 | if (!NILP (echo_area_buffer[0])) | 3075 | if (!NILP (echo_area_buffer[0])) |
| @@ -3090,6 +3093,7 @@ read_char (int commandflag, Lisp_Object map, | |||
| 3090 | and this_command_keys state. */ | 3093 | and this_command_keys state. */ |
| 3091 | this_command_key_count = key_count; | 3094 | this_command_key_count = key_count; |
| 3092 | this_command_key_count_reset = key_count_reset; | 3095 | this_command_key_count_reset = key_count_reset; |
| 3096 | this_single_command_key_start = command_key_start; | ||
| 3093 | if (key_count > 0) | 3097 | if (key_count > 0) |
| 3094 | this_command_keys = keys; | 3098 | this_command_keys = keys; |
| 3095 | 3099 | ||