luaur_vm/functions/
lua_resumeerror.rs1use crate::enums::lua_status::lua_Status;
2use crate::functions::lua_d_rawrunprotected_ldo::lua_d_rawrunprotected;
3use crate::functions::resume_findhandler::resume_findhandler;
4use crate::functions::resume_finish::resume_finish;
5use crate::functions::resume_handle::resume_handle;
6use crate::functions::resume_start::resume_start;
7use crate::macros::cast_byte::cast_byte;
8use crate::type_aliases::lua_state::lua_State;
9
10#[no_mangle]
11pub unsafe fn lua_resumeerror(L: *mut lua_State, from: *mut lua_State) -> i32 {
12 let starterror = resume_start(L, from, 1);
13 if starterror != 0 {
14 return starterror;
15 }
16
17 let old_n_c_calls = (*L).nCcalls;
18 let old_n_c_calls_i32: i32 = old_n_c_calls as i32;
19
20 let status = lua_Status::LUA_ERRRUN as i32;
21
22 let ci = resume_findhandler(L);
23 if !ci.is_null() {
24 (*L).status = cast_byte!(status);
25 let status_result =
26 lua_d_rawrunprotected(L, Some(resume_handle), ci as *mut core::ffi::c_void);
27 return resume_finish(L, status_result, old_n_c_calls_i32);
28 }
29
30 resume_finish(L, status, old_n_c_calls_i32)
31}