emacs-devel
[Top][All Lists]
Advanced

[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,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]