summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-07-28 15:07:01 +0200
committerBram Moolenaar <Bram@vim.org>2021-07-28 15:07:01 +0200
commit78e006b9b02fac94c910445d842f6dc5331fa57a (patch)
treec03873efec0f0ed556de2b98fde4353da75f1b93
parente2390c7f32879ab7942adf0d38b1db34933695fa (diff)
downloadvim-git-78e006b9b02fac94c910445d842f6dc5331fa57a.tar.gz
patch 8.2.3234: crash when printing long string with Luav8.2.3234
Problem: Crash when printing long string with Lua. Solution: Remove lua_pop(). (Martin Tournoij, closes #8648)
-rw-r--r--src/if_lua.c4
-rw-r--r--src/testdir/test_lua.vim18
-rw-r--r--src/version.c2
3 files changed, 22 insertions, 2 deletions
diff --git a/src/if_lua.c b/src/if_lua.c
index 82dffb0ba..79fb68168 100644
--- 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)
diff --git a/src/testdir/test_lua.vim b/src/testdir/test_lua.vim
index c33056319..2f204048f 100644
--- 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")')
diff --git a/src/version.c b/src/version.c
index b17233398..fa54081ca 100644
--- 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,