| 2050 | |
| 2051 | |
| 2052 | LUA_API void lua_replace (lua_State *L, int idx) { |
| 2053 | StkId o; |
| 2054 | lua_lock(L); |
| 2055 | /* explicit test for incompatible code */ |
| 2056 | if (idx == LUA_ENVIRONINDEX && L->ci == L->base_ci) |
| 2057 | luaG_runerror(L, "no calling environment"); |
| 2058 | api_checknelems(L, 1); |
| 2059 | o = index2adr(L, idx); |
| 2060 | api_checkvalidindex(L, o); |
| 2061 | if (idx == LUA_ENVIRONINDEX) { |
| 2062 | Closure *func = curr_func(L); |
| 2063 | api_check(L, ttistable(L->top - 1)); |
| 2064 | func->c.env = hvalue(L->top - 1); |
| 2065 | luaC_barrier(L, func, L->top - 1); |
| 2066 | } |
| 2067 | else { |
| 2068 | setobj(L, o, L->top - 1); |
| 2069 | if (idx < LUA_GLOBALSINDEX) /* function upvalue? */ |
| 2070 | luaC_barrier(L, curr_func(L), L->top - 1); |
| 2071 | } |
| 2072 | L->top--; |
| 2073 | lua_unlock(L); |
| 2074 | } |
| 2075 | |
| 2076 | |
| 2077 | LUA_API void lua_pushvalue (lua_State *L, int idx) { |
no test coverage detected