luaur_repl_cli/functions/
sigint_callback.rs1use core::ffi::c_int;
2use core::sync::atomic::AtomicPtr;
3
4use luaur_vm::functions::lua_callbacks::lua_callbacks;
5use luaur_vm::functions::lua_rawcheckstack::lua_rawcheckstack;
6use luaur_vm::macros::lua_l_error::luaL_error;
7use luaur_vm::type_aliases::lua_state::lua_State;
8
9pub static REPL_STATE: AtomicPtr<lua_State> = AtomicPtr::new(core::ptr::null_mut());
13
14pub unsafe extern "C-unwind" fn sigint_callback(l: *mut lua_State, gc: c_int) {
16 if gc >= 0 {
17 return;
18 }
19
20 (*lua_callbacks(l)).interrupt = None;
21
22 lua_rawcheckstack(l, 1); luaL_error!(l, "Execution interrupted");
24}