diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-01-07 02:24:16 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-01-07 02:24:16 +0100 |
commit | 720967f9849b63881ee705ab597975db1e628b33 (patch) | |
tree | b8071d1f2377712f306ad1849d99553b5c9f8616 /sys/src/libframe | |
parent | ee4ddd77f70132904f3c9cedb38540b336c68f70 (diff) |
libframe: fix _frcanfit() for zero width runes, simplify chopframe()
Diffstat (limited to 'sys/src/libframe')
-rw-r--r-- | sys/src/libframe/frinsert.c | 9 | ||||
-rw-r--r-- | sys/src/libframe/frutil.c | 5 |
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 |