summaryrefslogtreecommitdiff
path: root/sys/src/libframe
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-01-07 02:24:16 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2014-01-07 02:24:16 +0100
commit720967f9849b63881ee705ab597975db1e628b33 (patch)
treeb8071d1f2377712f306ad1849d99553b5c9f8616 /sys/src/libframe
parentee4ddd77f70132904f3c9cedb38540b336c68f70 (diff)
libframe: fix _frcanfit() for zero width runes, simplify chopframe()
Diffstat (limited to 'sys/src/libframe')
-rw-r--r--sys/src/libframe/frinsert.c9
-rw-r--r--sys/src/libframe/frutil.c5
2 files changed, 6 insertions, 8 deletions
diff --git a/sys/src/libframe/frinsert.c b/sys/src/libframe/frinsert.c
index 2c40955ba..a090e24f1 100644
--- a/sys/src/libframe/frinsert.c
+++ b/sys/src/libframe/frinsert.c
@@ -78,11 +78,10 @@ static
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 @@ chopframe(Frame *f, Point pt, ulong p, int bn)
}
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);
}
diff --git a/sys/src/libframe/frutil.c b/sys/src/libframe/frutil.c
index ad0c69c0a..e5d856b78 100644
--- a/sys/src/libframe/frutil.c
+++ b/sys/src/libframe/frutil.c
@@ -25,10 +25,9 @@ _frcanfit(Frame *f, Point pt, Frbox *b)
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