summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-04-20 21:12:30 +0200
committerBram Moolenaar <Bram@vim.org>2017-04-20 21:12:30 +0200
commita364cdb648ae009fa7aa05382f5659335683d349 (patch)
treedb5a75a4f1ec522dcad792847f8ebe4813e6a355
parentc03944151fec2d5469746642a949c8fcb5a744a8 (diff)
patch 8.0.0571: negative line number when using :z^ in an empty bufferv8.0.0571
Problem: The cursor line number becomes negative when using :z^ in an empty buffer. (neovim #6557) Solution: Correct the line number. Also reset the column.
-rw-r--r--src/ex_cmds.c8
-rw-r--r--src/testdir/test_ex_z.vim9
-rw-r--r--src/version.c2
3 files changed, 17 insertions, 2 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 4b0bdef59c..309474ce04 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4664,6 +4664,8 @@ ex_z(exarg_T *eap)
if (curs > curbuf->b_ml.ml_line_count)
curs = curbuf->b_ml.ml_line_count;
+ else if (curs < 1)
+ curs = 1;
for (i = start; i <= end; i++)
{
@@ -4686,7 +4688,11 @@ ex_z(exarg_T *eap)
}
}
- curwin->w_cursor.lnum = curs;
+ if (curwin->w_cursor.lnum != curs)
+ {
+ curwin->w_cursor.lnum = curs;
+ curwin->w_cursor.col = 0;
+ }
ex_no_reprint = TRUE;
}
diff --git a/src/testdir/test_ex_z.vim b/src/testdir/test_ex_z.vim
index 608a36c490..6e03b0bff9 100644
--- a/src/testdir/test_ex_z.vim
+++ b/src/testdir/test_ex_z.vim
@@ -68,7 +68,7 @@ func Test_z()
bw!
endfunc
-func Test_z_bug()
+func Test_z_overflow()
" This used to access invalid memory as a result of an integer overflow
" and freeze vim.
normal ox
@@ -76,3 +76,10 @@ func Test_z_bug()
z777777776666666
')
endfunc
+
+func Test_z_negative_lnum()
+ new
+ z^
+ call assert_equal(1, line('.'))
+ bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index c169765849..81b98c11fc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 571,
+/**/
570,
/**/
569,