forked from aniani/vim
patch 8.1.1611: bufadd() reuses existing buffer without a name
Problem: Bufadd() reuses existing buffer without a name. Solution: When the name is empty always create a new buffer.
This commit is contained in:
@@ -1929,7 +1929,9 @@ find_buffer(typval_T *avar)
|
|||||||
static void
|
static void
|
||||||
f_bufadd(typval_T *argvars, typval_T *rettv)
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -1539,6 +1539,20 @@ func Test_bufadd_bufload()
|
|||||||
call assert_equal(['some', 'text'], getbufline(buf, 1, '$'))
|
call assert_equal(['some', 'text'], getbufline(buf, 1, '$'))
|
||||||
call assert_equal(curbuf, bufnr(''))
|
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 someName
|
||||||
bwipe otherName
|
bwipe otherName
|
||||||
call assert_equal(0, bufexists('someName'))
|
call assert_equal(0, bufexists('someName'))
|
||||||
|
@@ -777,6 +777,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1611,
|
||||||
/**/
|
/**/
|
||||||
1610,
|
1610,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user