Skip site navigation (1)Skip section navigation (2)
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>