# HG changeset patch # User Christian Brabandt # Date 1530998105 -7200 # Node ID 396b71b242b241f9d743a516ff209ab81b04d313 # Parent 2aab309de110aff7ea71be43f1a3bb77cb1dcfdc patch 8.1.0164: luaeval('vim.buffer().name') returns an error commit https://github.com/vim/vim/commit/fe08df452af10db8a24dbeb1bd9ef09492a4bc66 Author: Bram Moolenaar Date: Sat Jul 7 23:07:41 2018 +0200 patch 8.1.0164: luaeval('vim.buffer().name') returns an error Problem: luaeval('vim.buffer().name') returns an error. Solution: Return an empty string. (Dominique Pelle, closes https://github.com/vim/vim/issues/3167) diff --git a/src/if_lua.c b/src/if_lua.c --- a/src/if_lua.c +++ b/src/if_lua.c @@ -1123,9 +1123,11 @@ luaV_buffer_index(lua_State *L) { const char *s = lua_tostring(L, 2); if (strncmp(s, "name", 4) == 0) - lua_pushstring(L, (char *) b->b_sfname); + lua_pushstring(L, (b->b_sfname == NULL) + ? "" : (char *) b->b_sfname); else if (strncmp(s, "fname", 5) == 0) - lua_pushstring(L, (char *) b->b_ffname); + lua_pushstring(L, (b->b_ffname == NULL) + ? "" : (char *) b->b_ffname); else if (strncmp(s, "number", 6) == 0) lua_pushinteger(L, b->b_fnum); /* methods */ diff --git a/src/testdir/test_lua.vim b/src/testdir/test_lua.vim --- a/src/testdir/test_lua.vim +++ b/src/testdir/test_lua.vim @@ -198,11 +198,8 @@ endfunc " Test vim.buffer().name and vim.buffer().fname func Test_buffer_name() new - " FIXME: for an unnamed buffer, I would expect - " vim.buffer().name to give an empty string, but - " it returns 0. Is it a bug? - " so this assert_equal is commented out. - " call assert_equal('', luaeval('vim.buffer().name')) + call assert_equal('', luaeval('vim.buffer().name')) + call assert_equal('', luaeval('vim.buffer().fname')) bwipe! new Xfoo diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -790,6 +790,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 164, +/**/ 163, /**/ 162,