changeset 14296:396b71b242b2 v8.1.0164

patch 8.1.0164: luaeval('vim.buffer().name') returns an error commit https://github.com/vim/vim/commit/fe08df452af10db8a24dbeb1bd9ef09492a4bc66 Author: Bram Moolenaar <Bram@vim.org> 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)
author Christian Brabandt <cb@256bit.org>
date Sat, 07 Jul 2018 23:15:05 +0200
parents 2aab309de110
children 42011b52bd3c
files src/if_lua.c src/testdir/test_lua.vim src/version.c
diffstat 3 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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 */
--- 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
--- 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,