aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-03-20 09:51:29 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-03-20 09:51:29 -0300
commit48e732e07d21d585982d1c53be0d9031f021f014 (patch)
tree194a6bfa528c857ddf2951bb73c75c84844b78af /lapi.c
parent938092489b9df19c9da7481c68d74dd7e0104949 (diff)
downloadlua-48e732e07d21d585982d1c53be0d9031f021f014.tar.gz
lua-48e732e07d21d585982d1c53be0d9031f021f014.tar.bz2
lua-48e732e07d21d585982d1c53be0d9031f021f014.zip
improvements in stack control
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/lapi.c b/lapi.c
index e9ad6f2a..7f696443 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 1.177 2002/03/18 18:18:35 roberto Exp roberto $ 2** $Id: lapi.c,v 1.178 2002/03/18 20:11:52 roberto Exp roberto $
3** Lua API 3** Lua API
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -35,7 +35,7 @@ const char lua_ident[] =
35 35
36#define api_checknelems(L, n) api_check(L, (n) <= (L->top - L->ci->base)) 36#define api_checknelems(L, n) api_check(L, (n) <= (L->top - L->ci->base))
37 37
38#define api_incr_top(L) (api_check(L, L->top+1<L->stack_last), L->top++) 38#define api_incr_top(L) (api_check(L, L->top<L->ci->top), L->top++)
39 39
40 40
41 41
@@ -85,12 +85,14 @@ void luaA_pushobject (lua_State *L, const TObject *o) {
85LUA_API int lua_checkstack (lua_State *L, int size) { 85LUA_API int lua_checkstack (lua_State *L, int size) {
86 int res; 86 int res;
87 lua_lock(L); 87 lua_lock(L);
88 if ((L->top - L->stack) + size >= LUA_MAXSTACK) 88 if ((L->top - L->stack) >= LUA_MAXSTACK - size)
89 res = 0; /* stack overflow */ 89 res = 0; /* stack overflow */
90 luaD_checkstack(L, size); 90 else {
91 if (L->ci->top < L->top + size) 91 luaD_checkstack(L, size);
92 L->ci->top = L->top + size; 92 if (L->ci->top < L->top + size)
93 res = 1; 93 L->ci->top = L->top + size;
94 res = 1;
95 }
94 lua_unlock(L); 96 lua_unlock(L);
95 return res; 97 return res;
96} 98}