diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-02-17 18:20:37 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-02-17 18:20:37 +0100 |
commit | bacd9da40eca8c1b3f93f01462cedf346141b824 (patch) | |
tree | 5ce6bcd58f300c4909d3e7116187261d25815e68 | |
parent | 8c83ac3d83970bc918fa788b2c820240fca113a5 (diff) | |
download | vim-bacd9da40eca8c1b3f93f01462cedf346141b824.zip |
updated for version 7.2.366
Problem: CTRL-B doesn't go back to the first line of the buffer.
Solution: Avoid an overflow when adding MAXCOL.
-rw-r--r-- | src/move.c | 21 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/move.c b/src/move.c index ad1f4d617..b4818ff16 100644 --- a/src/move.c +++ b/src/move.c @@ -1610,7 +1610,7 @@ scrollup_clamp() * Add one line above "lp->lnum". This can be a filler line, a closed fold or * a (wrapped) text line. Uses and sets "lp->fill". * Returns the height of the added line in "lp->height". - * Lines above the first one are incredibly high. + * Lines above the first one are incredibly high: MAXCOL. */ static void topline_back(lp) @@ -1942,7 +1942,7 @@ scroll_cursor_bot(min_scroll, set_topbot) { loff.lnum = curwin->w_topline; topline_back(&loff); - if (used + loff.height > curwin->w_height) + if (loff.height == MAXCOL || used + loff.height > curwin->w_height) break; used += loff.height; #ifdef FEAT_DIFF @@ -2021,7 +2021,10 @@ scroll_cursor_bot(min_scroll, set_topbot) /* Add one line above */ topline_back(&loff); - used += loff.height; + if (loff.height == MAXCOL) + used = MAXCOL; + else + used += loff.height; if (used > curwin->w_height) break; if (loff.lnum >= curwin->w_botline @@ -2175,7 +2178,10 @@ scroll_cursor_halfway(atend) if (below > above) /* add a line above the cursor */ { topline_back(&loff); - used += loff.height; + if (loff.height == MAXCOL) + used = MAXCOL; + else + used += loff.height; if (used > curwin->w_height) break; above += loff.height; @@ -2472,9 +2478,12 @@ onepage(dir, count) while (n <= curwin->w_height && loff.lnum >= 1) { topline_back(&loff); - n += loff.height; + if (loff.height == MAXCOL) + n = MAXCOL; + else + n += loff.height; } - if (n <= curwin->w_height) /* at begin of file */ + if (loff.lnum < 1) /* at begin of file */ { curwin->w_topline = 1; #ifdef FEAT_DIFF diff --git a/src/version.c b/src/version.c index 0b4206e48..dc9f440ac 100644 --- a/src/version.c +++ b/src/version.c @@ -682,6 +682,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 366, +/**/ 365, /**/ 364, |