aboutsummaryrefslogtreecommitdiff
path: root/lapi.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-03-07 15:15:10 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2002-03-07 15:15:10 -0300
commitc16a35d6696ac995ef6c7b60f251f6821811f50f (patch)
tree8a25bd8597f46fe7db32cce9efa6668f6b950edc /lapi.c
parent8f837e83b20f3c409ba187765c2bf5aefc111923 (diff)
downloadlua-c16a35d6696ac995ef6c7b60f251f6821811f50f.tar.gz
lua-c16a35d6696ac995ef6c7b60f251f6821811f50f.tar.bz2
lua-c16a35d6696ac995ef6c7b60f251f6821811f50f.zip
`lua_stackspace' replaced by `lua_checkstack'
Diffstat (limited to 'lapi.c')
-rw-r--r--lapi.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/lapi.c b/lapi.c
index 44001697..ec13bb74 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lapi.c,v 1.174 2002/02/14 21:46:13 roberto Exp roberto $ 2** $Id: lapi.c,v 1.175 2002/03/04 21:29:41 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*/
@@ -80,8 +80,18 @@ void luaA_pushobject (lua_State *L, const TObject *o) {
80 incr_top(L); 80 incr_top(L);
81} 81}
82 82
83LUA_API int lua_stackspace (lua_State *L) { 83
84 return (L->stack_last - L->top); 84LUA_API int lua_checkstack (lua_State *L, int size) {
85 int res;
86 lua_lock(L);
87 if ((L->top - L->stack) + size >= LUA_MAXSTACK)
88 res = 0; /* stack overflow */
89 luaD_checkstack(L, size);
90 if (L->ci->top < L->top + size)
91 L->ci->top = L->top + size;
92 res = 1;
93 lua_unlock(L);
94 return res;
85} 95}
86 96
87 97
@@ -667,8 +677,7 @@ LUA_API int lua_pushupvalues (lua_State *L) {
667 func = (L->ci->base - 1); 677 func = (L->ci->base - 1);
668 api_check(L, iscfunction(func)); 678 api_check(L, iscfunction(func));
669 n = clvalue(func)->c.nupvalues; 679 n = clvalue(func)->c.nupvalues;
670 if (LUA_MINSTACK+n > lua_stackspace(L)) 680 luaD_checkstack(L, n + LUA_MINSTACK);
671 luaD_error(L, "stack overflow");
672 for (i=0; i<n; i++) { 681 for (i=0; i<n; i++) {
673 setobj(L->top, &clvalue(func)->c.upvalue[i]); 682 setobj(L->top, &clvalue(func)->c.upvalue[i]);
674 L->top++; 683 L->top++;