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.
892ae723ab
This commit is contained in:
parent
3f6346b732
commit
5f7e0531c1
|
@ -7292,7 +7292,9 @@ static buf_T *find_buffer(typval_T *avar)
|
|||
// "bufadd(expr)" function
|
||||
static void f_bufadd(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1212,6 +1212,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'))
|
||||
|
|
Loading…
Reference in New Issue