lua: Fix crash on unprotected lua errors (#12658)

Can be reproduced with a script like this:

-- in some lua file
vim.fn.timer_start(10, function() error("uh....") end)

-- will cause neovim to crash with the following error.
PANIC: unprotected error in call to Lua API
        (nlua_CFunction_func_call failed.)

After this, it will instead print the error message
from the top of the stack, like so.

tmp/error_nvim.lua:10: uh...

Also added an example test. Previously this test
caused the embedded nvim to panic.
This commit is contained in:
TJ DeVries
2020-07-19 17:16:48 -04:00
committed by GitHub
parent 56f3b95180
commit 398201cfab
2 changed files with 13 additions and 1 deletions

View File

@@ -255,6 +255,18 @@ describe('luaeval()', function()
]])
end)
it('can handle functions with errors', function()
eq(true, exec_lua [[
vim.fn.timer_start(10, function()
error("dead function")
end)
vim.wait(1000, function() return false end)
return true
]])
end)
it('should handle passing functions around', function()
command [[
function VimCanCallLuaCallbacks(Concat, Cb)