luaur_vm/functions/
lua_b_getfenv.rs1use crate::enums::lua_type::lua_Type;
2use crate::functions::getfunc::getfunc;
3use crate::functions::lua_getfenv::lua_getfenv;
4use crate::functions::lua_iscfunction::lua_iscfunction;
5use crate::functions::lua_pushvalue::lua_pushvalue;
6use crate::functions::lua_setsafeenv::lua_setsafeenv;
7use crate::macros::lua_globalsindex::LUA_GLOBALSINDEX;
8use crate::type_aliases::lua_state::lua_State;
9
10pub unsafe fn lua_b_getfenv(L: *mut lua_State) -> i32 {
11 getfunc(L, 1);
12 if lua_iscfunction(L, -1) != 0 {
13 lua_pushvalue(L, LUA_GLOBALSINDEX);
14 } else {
15 lua_getfenv(L, -1);
16 }
17 lua_setsafeenv(L, -1, 0);
18 1
19}