aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/generators/gen_api_dispatch.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-06-30 16:03:58 +0200
committerGitHub <noreply@github.com>2019-06-30 16:03:58 +0200
commit10a533e9d41ad8917c17e96cf696fcea4b07374f (patch)
tree69bcc294d1a956856578e9dfb6d87271b6057729 /src/nvim/generators/gen_api_dispatch.lua
parent3b504e7c8d20bb41ef6b6f95e46527766438046a (diff)
parent99f24dfbed84cea24fc1d8bb80ab10a2dd3eca0b (diff)
downloadrneovim-10a533e9d41ad8917c17e96cf696fcea4b07374f.tar.gz
rneovim-10a533e9d41ad8917c17e96cf696fcea4b07374f.tar.bz2
rneovim-10a533e9d41ad8917c17e96cf696fcea4b07374f.zip
Merge pull request #10316 from bfredl/cb_safety
luv callbacks: throw error on deferred methods instead of crashing
Diffstat (limited to 'src/nvim/generators/gen_api_dispatch.lua')
-rw-r--r--src/nvim/generators/gen_api_dispatch.lua11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/nvim/generators/gen_api_dispatch.lua b/src/nvim/generators/gen_api_dispatch.lua
index f52d05a4a5..3ebcd2d1c4 100644
--- a/src/nvim/generators/gen_api_dispatch.lua
+++ b/src/nvim/generators/gen_api_dispatch.lua
@@ -309,7 +309,7 @@ for i = 1, #functions do
'(String) {.data = "'..fn.name..'", '..
'.size = sizeof("'..fn.name..'") - 1}, '..
'(MsgpackRpcRequestHandler) {.fn = handle_'.. (fn.impl_name or fn.name)..
- ', .async = '..tostring(fn.async)..'});\n')
+ ', .fast = '..tostring(fn.fast)..'});\n')
end
@@ -349,6 +349,7 @@ output:write([[
#include "nvim/api/private/defs.h"
#include "nvim/api/private/helpers.h"
#include "nvim/lua/converter.h"
+#include "nvim/lua/executor.h"
]])
include_headers(output, headers)
output:write('\n')
@@ -372,6 +373,14 @@ local function process_function(fn)
binding=lua_c_function_name,
api=fn.name
}
+
+ if not fn.fast then
+ write_shifted_output(output, string.format([[
+ if (!nlua_is_deferred_safe(lstate)) {
+ return luaL_error(lstate, e_luv_api_disabled, "%s");
+ }
+ ]], fn.name))
+ end
local cparams = ''
local free_code = {}
for j = #fn.parameters,1,-1 do