shithub: riscv

Download patch

ref: 720967f9849b63881ee705ab597975db1e628b33
parent: ee4ddd77f70132904f3c9cedb38540b336c68f70
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Mon Jan 6 21:24:16 EST 2014

libframe: fix _frcanfit() for zero width runes, simplify chopframe()

--- a/sys/src/libframe/frinsert.c
+++ b/sys/src/libframe/frinsert.c
@@ -78,11 +78,10 @@
 void
 chopframe(Frame *f, Point pt, ulong p, int bn)
 {
-	Frbox *b;
+	Frbox *b, *eb;
 
-	for(b = &f->box[bn]; ; b++){
-		if(b >= &f->box[f->nbox])
-			drawerror(f->display, "endofframe");
+	eb = &f->box[f->nbox];
+	for(b = &f->box[bn]; b < eb; b++){
 		_frcklinewrap(f, &pt, b);
 		if(pt.y >= f->r.max.y)
 			break;
@@ -91,7 +90,7 @@
 	}
 	f->nchars = p;
 	f->nlines = f->maxlines;
-	if(b<&f->box[f->nbox])				/* BUG */
+	if(b < eb)				/* BUG */
 		_frdelbox(f, (int)(b-f->box), f->nbox-1);
 }
 
--- a/sys/src/libframe/frutil.c
+++ b/sys/src/libframe/frutil.c
@@ -25,10 +25,9 @@
 			w = chartorune(&r, (char*)p);
 		left -= stringnwidth(f->font, (char*)p, 1);
 		if(left < 0)
-			return nr;
+			break;
 	}
-	drawerror(f->display, "_frcanfit can't");
-	return 0;
+	return nr;
 }
 
 void
--