[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Emacs 22 lockup + CCL: Quited.
From: |
Chong Yidong |
Subject: |
Re: Emacs 22 lockup + CCL: Quited. |
Date: |
Sun, 09 Mar 2008 23:04:21 -0400 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1.92 (gnu/linux) |
Glenn Morris <address@hidden> writes:
> Chong Yidong wrote:
>
>> "Kim F. Storm" <address@hidden> writes:
>>
>>> I'm using an Emacs 22 built a few days ago, and today it has started
>>> to lockup for long periods of time (many seconds) and even hitting C-g
>>> does not bring it back to life.
>>>
>>> But after some time has elapsed, it inserts "CCL:Quitted" in the buffer,
>>> and it becomes responsive again...
>
> Sounds like this issue from the trunk in September?
>
> http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg01314.html
Was the fix mentioned in this message the following one?
2007-09-14 Kenichi Handa <address@hidden>
* xterm.c (handle_one_xevent): Skip decoding if nbytes is zero.
Handa-san, could you check if a similar fix is needed for the branch?
*** xterm.c 2007/09/10 21:25:32 1.956
--- xterm.c 2007/09/14 04:11:26 1.957
***************
*** 6538,6579 ****
gives us composition information. */
coding.composing = COMPOSITION_DISABLED;
! for (i = 0; i < nbytes; i++)
{
! STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
! }
! {
! /* Decode the input data. */
! int require;
! unsigned char *p;
!
! require = decoding_buffer_size (&coding, nbytes);
! p = (unsigned char *) alloca (require);
! coding.mode |= CODING_MODE_LAST_BLOCK;
! /* We explicitly disable composition handling because
! key data should not contain any composition sequence. */
! coding.composing = COMPOSITION_DISABLED;
! decode_coding (&coding, copy_bufptr, p, nbytes, require);
! nbytes = coding.produced;
! nchars = coding.produced_char;
! copy_bufptr = p;
! }
! /* Convert the input data to a sequence of
! character events. */
! for (i = 0; i < nbytes; i += len)
! {
! if (nchars == nbytes)
! c = copy_bufptr[i], len = 1;
! else
! c = STRING_CHAR_AND_LENGTH (copy_bufptr + i,
! nbytes - i, len);
! inev.ie.kind = (SINGLE_BYTE_CHAR_P (c)
! ? ASCII_KEYSTROKE_EVENT
! : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
! inev.ie.code = c;
! kbd_buffer_store_event_hold (&inev.ie, hold_quit);
}
/* Previous code updated count by nchars rather than nbytes,
--- 6538,6580 ----
gives us composition information. */
coding.composing = COMPOSITION_DISABLED;
! if (nbytes > 0)
{
! /* Decode the input data. */
! int require;
! unsigned char *p;
! for (i = 0; i < nbytes; i++)
! {
! STORE_KEYSYM_FOR_DEBUG (copy_bufptr[i]);
! }
! require = decoding_buffer_size (&coding, nbytes);
! p = (unsigned char *) alloca (require);
! coding.mode |= CODING_MODE_LAST_BLOCK;
! /* We explicitly disable composition handling because
! key data should not contain any composition sequence. */
! coding.composing = COMPOSITION_DISABLED;
! decode_coding (&coding, copy_bufptr, p, nbytes, require);
! nbytes = coding.produced;
! nchars = coding.produced_char;
! copy_bufptr = p;
!
! /* Convert the input data to a sequence of
! character events. */
! for (i = 0; i < nbytes; i += len)
! {
! if (nchars == nbytes)
! c = copy_bufptr[i], len = 1;
! else
! c = STRING_CHAR_AND_LENGTH (copy_bufptr + i,
! nbytes - i, len);
! inev.ie.kind = (SINGLE_BYTE_CHAR_P (c)
! ? ASCII_KEYSTROKE_EVENT
! : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
! inev.ie.code = c;
! kbd_buffer_store_event_hold (&inev.ie, hold_quit);
! }
}
/* Previous code updated count by nchars rather than nbytes,