pub unsafe extern "C" fn lua_pcall(
l: *mut lua_State,
nargs: c_int,
nresults: c_int,
errfunc: c_int
) -> c_int
Expand description
Calls a function in protected mode. [-(nargs + 1), +(nresults|1), -]
Both nargs
and nresults
have the same meaning as in lua_call
. If
there are no errors during the call, lua_pcall
behaves exactly like
lua_call
. However, if there is any error, lua_pcall
catches it,
pushes a single value on the stack (the error message), and returns an
error code. Like lua_call, lua_pcall
always removes the function and
its arguments from the stack.
If errfunc
is 0, then the error message returned on the stack is
exactly the original error message. Otherwise, errfunc
is the stack
index of an error handler function. (In the current implementation, this
index cannot be a pseudo-index.) In case of runtime errors, this
function will be called with the error message and its return value will
be the message returned on the stack by lua_pcall
.
Typically, the error handler function is used to add more debug
information to the error message, such as a stack traceback. Such
information cannot be gathered after the return of lua_pcall
, since by
then the stack has unwound.
The lua_pcall
function returns 0 in case of success or one of the
following error codes:
-
LUA_ERRRUN
: a runtime error. -
LUA_ERRMEM
: memory allocation error. For such errors, Lua does not call the error handler function. -
LUA_ERRERR
: error while running the error handler function.