Skip to main content

luaur_vm/functions/
lua_resume.rs

1use crate::functions::lua_d_rawrunprotected_ldo::luaD_rawrunprotected;
2use crate::functions::resume::resume;
3use crate::functions::resume_finish::resume_finish;
4use crate::functions::resume_start::resume_start;
5use crate::type_aliases::lua_state::lua_State;
6use core::ffi::c_int;
7
8#[allow(non_snake_case)]
9pub unsafe fn lua_resume(l: *mut lua_State, from: *mut lua_State, nargs: c_int) -> c_int {
10    let starterror = resume_start(l, from, nargs);
11    if starterror != 0 {
12        return starterror;
13    }
14
15    let oldnCcalls = (*l).nCcalls as c_int;
16    let status = luaD_rawrunprotected(
17        l,
18        Some(resume),
19        (*l).top.offset(-(nargs as isize)) as *mut core::ffi::c_void,
20    );
21
22    resume_finish(l, status, oldnCcalls)
23}