summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-30 20:33:01 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-30 20:33:01 +0200
commit892ae723ab95e429222e930cf41b32809567e58e (patch)
treeb13676187124dfbde65761e13bb9791d4ede5775 /src
parent15e248e37f3925d430f96e945d52d3dc423cdc83 (diff)
downloadvim-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.
Diffstat (limited to 'src')
-rw-r--r--src/evalfunc.c4
-rw-r--r--src/testdir/test_functions.vim14
-rw-r--r--src/version.c2
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,