patch 9.0.0837: append() reports failure when not appending anything
Problem: append() reports failure when not appending anything.
Solution: Only report failure when appending something. (closes #11498)
diff --git a/src/evalbuffer.c b/src/evalbuffer.c
index e77435b..9ce1d41 100644
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -175,9 +175,7 @@
l = lines->vval.v_list;
if (l == NULL || list_len(l) == 0)
{
- // set proper return code
- if (lnum > curbuf->b_ml.ml_line_count)
- rettv->vval.v_number = 1; // FAIL
+ // not appending anything always succeeds
goto done;
}
CHECK_LIST_MATERIALIZE(l);
diff --git a/src/testdir/test_bufline.vim b/src/testdir/test_bufline.vim
index c592877..13e891b 100644
--- a/src/testdir/test_bufline.vim
+++ b/src/testdir/test_bufline.vim
@@ -23,8 +23,8 @@
call assert_equal(1, setbufline(b, 5, 'x'))
call assert_equal(1, setbufline(b, 5, ['x']))
- call assert_equal(1, setbufline(b, 5, []))
- call assert_equal(1, setbufline(b, 5, test_null_list()))
+ call assert_equal(0, setbufline(b, 5, []))
+ call assert_equal(0, setbufline(b, 5, test_null_list()))
call assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1))
call assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1))
@@ -86,6 +86,11 @@
sleep 50m
call assert_equal(['Hello'], readfile('Xtest'))
+ call assert_equal(0, setline(1, []))
+ call assert_equal(0, setline(1, test_null_list()))
+ call assert_equal(0, setline(5, []))
+ call assert_equal(0, setline(6, test_null_list()))
+
call delete('Xtest')
endfunc
@@ -112,8 +117,8 @@
call assert_equal(1, appendbufline(b, 4, 'x'))
call assert_equal(1, appendbufline(b, 4, ['x']))
- call assert_equal(1, appendbufline(b, 4, []))
- call assert_equal(1, appendbufline(b, 4, test_null_list()))
+ call assert_equal(0, appendbufline(b, 4, []))
+ call assert_equal(0, appendbufline(b, 4, test_null_list()))
call assert_equal(1, appendbufline(1234, 1, 'x'))
call assert_equal(1, appendbufline(1234, 1, ['x']))
@@ -122,8 +127,8 @@
call assert_equal(0, appendbufline(b, 1, []))
call assert_equal(0, appendbufline(b, 1, test_null_list()))
- call assert_equal(1, appendbufline(b, 3, []))
- call assert_equal(1, appendbufline(b, 3, test_null_list()))
+ call assert_equal(0, appendbufline(b, 3, []))
+ call assert_equal(0, appendbufline(b, 3, test_null_list()))
call assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$'))
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 831a894..131db10 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -939,9 +939,13 @@
func Test_append()
enew!
split
- call append(0, ["foo"])
- call append(1, [])
- call append(1, test_null_list())
+ call assert_equal(0, append(1, []))
+ call assert_equal(0, append(1, test_null_list()))
+ call assert_equal(0, append(0, ["foo"]))
+ call assert_equal(0, append(1, []))
+ call assert_equal(0, append(1, test_null_list()))
+ call assert_equal(0, append(8, []))
+ call assert_equal(0, append(9, test_null_list()))
call assert_equal(['foo', ''], getline(1, '$'))
split
only
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim
index e9ec439..10ae2ee 100644
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -3721,8 +3721,8 @@
assert_equal(1, setbufline(b, 5, 'x'))
assert_equal(1, setbufline(b, 5, ['x']))
- assert_equal(1, setbufline(b, 5, []))
- assert_equal(1, setbufline(b, 5, test_null_list()))
+ assert_equal(0, setbufline(b, 5, []))
+ assert_equal(0, setbufline(b, 5, test_null_list()))
assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1))
assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1))
diff --git a/src/version.c b/src/version.c
index 2694639..56ccb05 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 837,
+/**/
836,
/**/
835,