mirror of https://github.com/rusefi/lua.git
improvements in stack control
This commit is contained in:
parent
938092489b
commit
48e732e07d
8
lapi.c
8
lapi.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lapi.c,v 1.177 2002/03/18 18:18:35 roberto Exp roberto $
|
** $Id: lapi.c,v 1.178 2002/03/18 20:11:52 roberto Exp roberto $
|
||||||
** Lua API
|
** Lua API
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -35,7 +35,7 @@ const char lua_ident[] =
|
||||||
|
|
||||||
#define api_checknelems(L, n) api_check(L, (n) <= (L->top - L->ci->base))
|
#define api_checknelems(L, n) api_check(L, (n) <= (L->top - L->ci->base))
|
||||||
|
|
||||||
#define api_incr_top(L) (api_check(L, L->top+1<L->stack_last), L->top++)
|
#define api_incr_top(L) (api_check(L, L->top<L->ci->top), L->top++)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,12 +85,14 @@ void luaA_pushobject (lua_State *L, const TObject *o) {
|
||||||
LUA_API int lua_checkstack (lua_State *L, int size) {
|
LUA_API int lua_checkstack (lua_State *L, int size) {
|
||||||
int res;
|
int res;
|
||||||
lua_lock(L);
|
lua_lock(L);
|
||||||
if ((L->top - L->stack) + size >= LUA_MAXSTACK)
|
if ((L->top - L->stack) >= LUA_MAXSTACK - size)
|
||||||
res = 0; /* stack overflow */
|
res = 0; /* stack overflow */
|
||||||
|
else {
|
||||||
luaD_checkstack(L, size);
|
luaD_checkstack(L, size);
|
||||||
if (L->ci->top < L->top + size)
|
if (L->ci->top < L->top + size)
|
||||||
L->ci->top = L->top + size;
|
L->ci->top = L->top + size;
|
||||||
res = 1;
|
res = 1;
|
||||||
|
}
|
||||||
lua_unlock(L);
|
lua_unlock(L);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue