Date: Mon, 10 Mar 2014 07:32:47 -0500 From: Bob Willcox <bob@immure.com> To: Zhihao Yuan <zy@miator.net> Cc: FreeBSD Stable ML <stable@freebsd.org> Subject: Re: vi loop when resizing window Message-ID: <20140310123247.GF2665@rancor.immure.com> In-Reply-To: <CAGsORuCMLDt9w9n8h=2JdYuc2B3=0fNM8ocDcFEpfoEqU3Vhtg@mail.gmail.com> References: <20140308162614.GC94968@rancor.immure.com> <20140308171824.GA31887@spectrum.skysmurf.nl> <20140308172501.GH1626@albert.catwhisker.org> <20140308214410.GC2665@rancor.immure.com> <CAGsORuAY4gs8yPaTAJ6WnvTL%2BjQg%2B-Vj8XQdy2GHbStm2VCrsw@mail.gmail.com> <20140310031449.GE2665@rancor.immure.com> <CAGsORuCMLDt9w9n8h=2JdYuc2B3=0fNM8ocDcFEpfoEqU3Vhtg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
The patch appears to have fixed it. It no longer goes into a loop when I resize the xterm. Thanks! Bob On Mon, Mar 10, 2014 at 12:23:32AM -0400, Zhihao Yuan wrote: > On Sun, Mar 9, 2014 at 11:14 PM, Bob Willcox <bob@immure.com> wrote: > > ------------------------------------------------------------------------ > > r259073 | peter | 2013-12-07 12:23:29 -0600 (Sat, 07 Dec 2013) | 13 lines > > > > Hoist all the mergeinfo up to the root in preparation for enforcing merges > > to the root only. All MFC's were rerecorded to the root. > > r259073 < r259088, I would suggest to try whether the > attached patch helps. I just tried `make buildworld` on > HEAD, and did not repro your problem. > > -- > Zhihao Yuan, ID lichray > The best way to predict the future is to invent it. > ___________________________________________________ > 4BSD -- http://4bsd.biz/ > Index: common/key.c > =================================================================== > --- common/key.c (revision 259087) > +++ common/key.c (revision 259088) > @@ -10,7 +10,7 @@ > #include "config.h" > > #ifndef lint > -static const char sccsid[] = "$Id: key.c,v 10.53 2013/03/11 01:20:53 yamt Exp $"; > +static const char sccsid[] = "$Id: key.c,v 10.54 2013/11/13 12:15:27 zy Exp $"; > #endif /* not lint */ > > #include <sys/types.h> > @@ -272,7 +272,7 @@ > * The code prints non-printable wide characters in 4 or 5 digits > * Unicode escape sequences, so only supports plane 0 to 15. > */ > - if (ISPRINT(ach)) > + if (CAN_PRINT(sp, ach)) > goto done; > nopr: if (iscntrl(ch) && (ch < 0x20 || ch == 0x7f)) { > sp->cname[0] = '^'; > Index: common/key.h > =================================================================== > --- common/key.h (revision 259087) > +++ common/key.h (revision 259088) > @@ -6,7 +6,7 @@ > * > * See the LICENSE file for redistribution information. > * > - * $Id: key.h,v 10.55 2012/10/07 01:31:17 zy Exp $ > + * $Id: key.h,v 10.56 2013/11/13 12:15:27 zy Exp $ > */ > > #include "multibyte.h" > @@ -23,8 +23,9 @@ > #define INPUT2INT5(sp,cw,n,nlen,w,wlen) \ > sp->conv.input2int(sp, n, nlen, &(cw), &wlen, &w) > #define CONST > +#define INTISWIDE(c) (wctob(c) == EOF) > #define CHAR_WIDTH(sp, ch) wcwidth(ch) > -#define INTISWIDE(c) (wctob(c) == EOF) > +#define CAN_PRINT(sp, ch) (CHAR_WIDTH(sp, ch) > 0) > #else > #define FILE2INT5(sp,buf,n,nlen,w,wlen) \ > (w = n, wlen = nlen, 0) > @@ -36,9 +37,10 @@ > (n = w, nlen = wlen, 0) > #define INPUT2INT5(sp,buf,n,nlen,w,wlen) \ > (w = n, wlen = nlen, 0) > -#define CONST const > -#define INTISWIDE(c) 0 > +#define CONST const > +#define INTISWIDE(c) 0 > #define CHAR_WIDTH(sp, ch) 1 > +#define CAN_PRINT(sp, ch) isprint(ch) > #endif > #define FILE2INT(sp,n,nlen,w,wlen) \ > FILE2INT5(sp,sp->cw,n,nlen,w,wlen) > Index: cl/cl_term.c > =================================================================== > --- cl/cl_term.c (revision 259087) > +++ cl/cl_term.c (revision 259088) > @@ -10,7 +10,7 @@ > #include "config.h" > > #ifndef lint > -static const char sccsid[] = "$Id: cl_term.c,v 10.33 2012/04/21 23:51:46 zy Exp $"; > +static const char sccsid[] = "$Id: cl_term.c,v 10.34 2013/12/07 16:21:14 wjenkner Exp $"; > #endif /* not lint */ > > #include <sys/types.h> > @@ -187,14 +187,18 @@ > int > cl_term_end(GS *gp) > { > - SEQ *qp, *nqp; > + SEQ *qp, *nqp, *pre_qp = NULL; > > /* Delete screen specific mappings. */ > SLIST_FOREACH_SAFE(qp, gp->seqq, q, nqp) > if (F_ISSET(qp, SEQ_SCREEN)) { > - SLIST_REMOVE_HEAD(gp->seqq, q); > + if (qp == SLIST_FIRST(gp->seqq)) > + SLIST_REMOVE_HEAD(gp->seqq, q); > + else > + SLIST_REMOVE_AFTER(pre_qp, q); > (void)seq_free(qp); > - } > + } else > + pre_qp = qp; > return (0); > } > > Index: . > =================================================================== > --- . (revision 259087) > +++ . (revision 259088) > > Property changes on: . > ___________________________________________________________________ > Modified: svn:mergeinfo > Merged /vendor/nvi/dist:r259086 -- Bob Willcox | (1) If it's green or it wiggles, it's biology. bob@immure.com | (2) If it stinks, it's chemistry. Austin, TX | (3) If it doesn't work, it's physics.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140310123247.GF2665>