changeset 25394:3a8b61b31724 v8.2.3234

patch 8.2.3234: crash when printing long string with Lua Commit: https://github.com/vim/vim/commit/78e006b9b02fac94c910445d842f6dc5331fa57a Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 28 15:07:01 2021 +0200 patch 8.2.3234: crash when printing long string with Lua Problem: Crash when printing long string with Lua. Solution: Remove lua_pop(). (Martin Tournoij, closes https://github.com/vim/vim/issues/8648)
author Bram Moolenaar <Bram@vim.org>
date Wed, 28 Jul 2021 15:15:04 +0200
parents 6fe0a85534b8
children 8312a5e2eef2
files src/if_lua.c src/testdir/test_lua.vim src/version.c
diffstat 3 files changed, 22 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -1734,9 +1734,9 @@ luaV_print(lua_State *L)
 	s = lua_tolstring(L, -1, &l);
 	if (s == NULL)
 	    return luaL_error(L, "cannot convert to string");
-	if (i > 1) luaL_addchar(&b, ' '); // use space instead of tab
+	if (i > 1)
+	    luaL_addchar(&b, ' '); // use space instead of tab
 	luaV_addlstring(&b, s, l, 0);
-	lua_pop(L, 1);
     }
     luaL_pushresult(&b);
     if (!got_int)
--- a/src/testdir/test_lua.vim
+++ b/src/testdir/test_lua.vim
@@ -850,6 +850,24 @@ func Test_luafile_error()
   bwipe!
 endfunc
 
+" Test :luafile printing a long string
+func Test_luafile_print()
+  new Xlua_file
+  let lines =<< trim END
+      local data = ''
+      for i = 1, 130 do
+	data = data .. 'xxxxx asd as as dad sad sad xz cxz  czxcxzczxc ad ad asd asd asd asd asd'
+      end
+      print(data)
+  END
+  call setline(1, lines)
+  w
+  luafile %
+
+  call delete('Xlua_file')
+  bwipe!
+endfunc
+
 " Test for dealing with strings containing newlines and null character
 func Test_lua_string_with_newline()
   let x = execute('lua print("Hello\nWorld")')
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3234,
+/**/
     3233,
 /**/
     3232,