Pierre Habouzit wrote: > in certain conditions, vim was freezing on swap file prompt. One of our > users tracked that bug down, and a patch is attached. > > look http://bugs.debian.org/292397 > > for more explanations !
[...] > Subject: Bug#292397: vim freezes on swap file prompt > Date: Jeu 13 Avril 2006 13:55 > From: Bas Zoetekouw <[EMAIL PROTECTED]> > To: [EMAIL PROTECTED] > Cc: [EMAIL PROTECTED] [...] > If I set a breakpoint on line 3026 of misc1.c (just after the > ui_inchar() call), I can verify that indeed a special key code is > returned (i.e. the cursor I pressed). Specifically, the key code > returned is 0x80 0x8a 0x95 ("\eku", which I guess means the uparrow). > However, this key is not handled at all: in the FEAT_MBYTE ifdef on > line 3084, the "continue" is called, and the loop progresses to the > next iteration, after which the key is never returned anymore by > get_keystroke(). > > So, the problem seems to be that the special sequences that are > generated by the cursor keys are mistaken for an incomplete multibyte > sequence; the check for such a special sequence is only done in > do_diaglog(), after get_keystroke() has returned. > > The following patch solves this, and works fine here. Please include > it in the debian packages and also send it upstream. > > --- vim/src/misc1.eerst 2006-04-13 13:45:37.000000000 +0200 > +++ vim/src/misc1.c 2006-04-13 13:48:10.000000000 +0200 > @@ -3082,7 +3082,9 @@ > } > } > #ifdef FEAT_MBYTE > - if (has_mbyte) > + /* if n<0, this is a special key (eg cursor) which should > + * not be mistaken for an incomplete multibyte sequence */ > + if (has_mbyte && n>=0) > { > if (MB_BYTE2LEN(n) > len) > continue; /* more bytes to get */ I think a simpler solution is to add a "break" in the situation that K_SPECIAL is seen and the special key is not ignored: *** misc1.c~ Thu Apr 13 15:42:20 2006 --- misc1.c Thu Apr 13 16:56:51 2006 *************** *** 3085,3090 **** --- 3085,3091 ---- mch_memmove(buf, buf + 3, (size_t)len); continue; } + break; } #ifdef FEAT_MBYTE if (has_mbyte) -- hundred-and-one symptoms of being an internet addict: 75. You start wondering whether you could actually upgrade your brain with a Pentium Pro microprocessor 80. The upgrade works just fine. /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://www.ICCF.nl ///