fix(lua): memory leak when using invalid syntax with exists() (#26530)

This commit is contained in:
zeertzjq
2023-12-12 20:34:02 +08:00
committed by GitHub
parent 1d4a5cd185
commit b40170f7a3
3 changed files with 24 additions and 36 deletions

View File

@@ -2323,10 +2323,12 @@ bool nlua_func_exists(const char *lua_funcname)
vim_snprintf(str, length, "return %s", lua_funcname);
ADD_C(args, CSTR_AS_OBJ(str));
Error err = ERROR_INIT;
Object result = NLUA_EXEC_STATIC("return type(loadstring(...)()) =='function'", args, &err);
Object result = NLUA_EXEC_STATIC("return type(loadstring(...)()) == 'function'", args, &err);
xfree(str);
api_clear_error(&err);
if (result.type != kObjectTypeBoolean) {
api_free_object(result);
return false;
}
return result.data.boolean;