Skip to main content

luaur_vm/functions/
lua_b_assert.rs

1use crate::functions::lua_gettop::lua_gettop;
2use crate::functions::lua_l_checkany::lua_l_checkany;
3use crate::functions::lua_l_error_l::lua_l_error_l;
4use crate::functions::lua_l_optlstring::lua_l_optlstring;
5use crate::functions::lua_toboolean::lua_toboolean;
6use crate::type_aliases::lua_state::lua_State;
7use core::ffi::CStr;
8
9#[no_mangle]
10pub unsafe fn lua_b_assert(L: *mut lua_State) -> core::ffi::c_int {
11    lua_l_checkany(L, 1);
12    if lua_toboolean(L, 1) == 0 {
13        let mut len = 0;
14        let msg = lua_l_optlstring(L, 2, c"assertion failed!".as_ptr(), &mut len);
15        let msg = CStr::from_ptr(msg).to_string_lossy();
16        lua_l_error_l(L, c"%s".as_ptr(), format_args!("{}", msg));
17    }
18    lua_gettop(L)
19}