From bacd9da40eca8c1b3f93f01462cedf346141b824 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 17 Feb 2010 18:20:37 +0100 Subject: 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. --- src/move.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src/move.c') diff --git a/src/move.c b/src/move.c index ad1f4d617b..b4818ff16a 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 -- cgit v1.2.3