mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-24 11:41:58 +00:00
acme: fix bufread crash due to typing-point scrolling
Acme tracks the most recent typing insertion point and the home and end keys stop there on their way up to the top or down to the bottom of the file. That point should be iq1, and it should be adjusted properly so that it's always between 0 and t->file->b.nc inclusive. (This is all code from an external contributor, years old at this point but new since Plan 9.) Somehow, sometimes iq1 ends up a little beyond b.nc, and when passed to textbacknl it crashes acme in bufread. I can't see how that can happen but if it does, avoid the crash. It's tempting to pull the insertion point code out entirely but this is a little less invasive and should fix things for now. TBR=rsc https://codereview.appspot.com/107730043
This commit is contained in:
parent
6400c9f20c
commit
50ababbd55
1 changed files with 4 additions and 0 deletions
|
@ -725,6 +725,10 @@ texttype(Text *t, Rune r)
|
|||
case Kend:
|
||||
typecommit(t);
|
||||
if(t->iq1 > t->org+t->fr.nchars) {
|
||||
if(t->iq1 > t->file->b.nc) {
|
||||
// should not happen, but does. and it will crash textbacknl.
|
||||
t->iq1 = t->file->b.nc;
|
||||
}
|
||||
q0 = textbacknl(t, t->iq1, 1);
|
||||
textsetorigin(t, q0, TRUE);
|
||||
} else
|
||||
|
|
Loading…
Reference in a new issue