diff --git a/luprex/ext/eris-master/src/lapi.c b/luprex/ext/eris-master/src/lapi.c index feec81a5..f8390b78 100644 --- a/luprex/ext/eris-master/src/lapi.c +++ b/luprex/ext/eris-master/src/lapi.c @@ -203,6 +203,23 @@ LUA_API void lua_insert (lua_State *L, int idx) { } +// Insert specified number of 'nil' at base of the stack. +LUA_API void lua_insert_frame (lua_State *L, int count) { + StkId p, q; + if (count > 0) { + lua_lock(L); + api_check(L, L->top + count <= L->stack_last, "Not enough space to insert frame"); + p = L->ci->func + 1; + for (q = L->top - 1; q >= p; q--) + setobjs2s(L, q + count, q); + L->top += count; + for (q = p + count; p < q; p++) + setnilvalue(p); + lua_unlock(L); + } +} + + static void moveto (lua_State *L, TValue *fr, int idx) { TValue *to = index2addr(L, idx); api_checkvalidindex(L, to); diff --git a/luprex/ext/eris-master/src/lua.h b/luprex/ext/eris-master/src/lua.h index 385e9175..85a6e472 100644 --- a/luprex/ext/eris-master/src/lua.h +++ b/luprex/ext/eris-master/src/lua.h @@ -147,6 +147,7 @@ LUA_API void (lua_settop) (lua_State *L, int idx); LUA_API void (lua_pushvalue) (lua_State *L, int idx); LUA_API void (lua_remove) (lua_State *L, int idx); LUA_API void (lua_insert) (lua_State *L, int idx); +LUA_API void (lua_insert_frame) (lua_State *L, int count); LUA_API void (lua_replace) (lua_State *L, int idx); LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); LUA_API int (lua_checkstack) (lua_State *L, int sz);