Skip to main content

luaur_vm/functions/
lua_b_getfenv.rs

1use 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}