From c16a35d6696ac995ef6c7b60f251f6821811f50f Mon Sep 17 00:00:00 2001
From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Thu, 7 Mar 2002 15:15:10 -0300
Subject: `lua_stackspace' replaced by `lua_checkstack'

---
 lapi.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

(limited to 'lapi.c')

diff --git a/lapi.c b/lapi.c
index 44001697..ec13bb74 100644
--- a/lapi.c
+++ b/lapi.c
@@ -1,5 +1,5 @@
 /*
-** $Id: lapi.c,v 1.174 2002/02/14 21:46:13 roberto Exp roberto $
+** $Id: lapi.c,v 1.175 2002/03/04 21:29:41 roberto Exp roberto $
 ** Lua API
 ** See Copyright Notice in lua.h
 */
@@ -80,8 +80,18 @@ void luaA_pushobject (lua_State *L, const TObject *o) {
   incr_top(L);
 }
 
-LUA_API int lua_stackspace (lua_State *L) {
-  return (L->stack_last - L->top);
+
+LUA_API int lua_checkstack (lua_State *L, int size) {
+  int res;
+  lua_lock(L);
+  if ((L->top - L->stack) + size >= LUA_MAXSTACK)
+    res = 0;  /* stack overflow */
+  luaD_checkstack(L, size);
+  if (L->ci->top < L->top + size)
+    L->ci->top = L->top + size;
+  res = 1;
+  lua_unlock(L);
+  return res;
 }
 
 
@@ -667,8 +677,7 @@ LUA_API int lua_pushupvalues (lua_State *L) {
   func = (L->ci->base - 1);
   api_check(L, iscfunction(func));
   n = clvalue(func)->c.nupvalues;
-  if (LUA_MINSTACK+n > lua_stackspace(L))
-    luaD_error(L, "stack overflow");
+  luaD_checkstack(L, n + LUA_MINSTACK);
   for (i=0; i<n; i++) {
     setobj(L->top, &clvalue(func)->c.upvalue[i]);
     L->top++;
-- 
cgit v1.2.3-55-g6feb