diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-06-30 20:33:01 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-06-30 20:33:01 +0200 |
commit | 892ae723ab95e429222e930cf41b32809567e58e (patch) | |
tree | b13676187124dfbde65761e13bb9791d4ede5775 | |
parent | 15e248e37f3925d430f96e945d52d3dc423cdc83 (diff) | |
download | vim-git-892ae723ab95e429222e930cf41b32809567e58e.tar.gz |
patch 8.1.1611: bufadd() reuses existing buffer without a namev8.1.1611
Problem: Bufadd() reuses existing buffer without a name.
Solution: When the name is empty always create a new buffer.
-rw-r--r-- | src/evalfunc.c | 4 | ||||
-rw-r--r-- | src/testdir/test_functions.vim | 14 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 19 insertions, 1 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c index 954ea9fe9..01afa3d4a 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -1929,7 +1929,9 @@ find_buffer(typval_T *avar) static void f_bufadd(typval_T *argvars, typval_T *rettv) { - rettv->vval.v_number = buflist_add(tv_get_string(&argvars[0]), 0); + char_u *name = tv_get_string(&argvars[0]); + + rettv->vval.v_number = buflist_add(*name == NUL ? NULL : name, 0); } /* diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 34a4bbf62..a08cef79d 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -1539,6 +1539,20 @@ func Test_bufadd_bufload() call assert_equal(['some', 'text'], getbufline(buf, 1, '$')) call assert_equal(curbuf, bufnr('')) + let buf1 = bufadd('') + let buf2 = bufadd('') + call assert_notequal(0, buf1) + call assert_notequal(0, buf2) + call assert_notequal(buf1, buf2) + call assert_equal(1, bufexists(buf1)) + call assert_equal(1, bufexists(buf2)) + call assert_equal(0, bufloaded(buf1)) + exe 'bwipe ' .. buf1 + call assert_equal(0, bufexists(buf1)) + call assert_equal(1, bufexists(buf2)) + exe 'bwipe ' .. buf2 + call assert_equal(0, bufexists(buf2)) + bwipe someName bwipe otherName call assert_equal(0, bufexists('someName')) diff --git a/src/version.c b/src/version.c index 6fce98b1f..a1c5f88a8 100644 --- a/src/version.c +++ b/src/version.c @@ -778,6 +778,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1611, +/**/ 1610, /**/ 1609, |