From 720967f9849b63881ee705ab597975db1e628b33 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 7 Jan 2014 02:24:16 +0100 Subject: libframe: fix _frcanfit() for zero width runes, simplify chopframe() --- sys/src/libframe/frinsert.c | 9 ++++----- sys/src/libframe/frutil.c | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) (limited to 'sys/src/libframe') 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 -- cgit v1.2.3