Browse Source

stack is indexed by integers, not Words, to allow bigger stack on 32 bit machines

Roberto Ierusalimschy 31 years ago
parent
commit
5b8ced84b4
1 changed files with 6 additions and 2 deletions
  1. 6 2
      opcode.c

+ 6 - 2
opcode.c

@@ -3,7 +3,7 @@
 ** TecCGraf - PUC-Rio
 */
 
-char *rcs_opcode="$Id: opcode.c,v 3.29 1994/12/27 20:53:15 celes Exp roberto $";
+char *rcs_opcode="$Id: opcode.c,v 3.30 1994/12/28 12:55:47 roberto Exp roberto $";
 
 #include <setjmp.h>
 #include <stdio.h>
@@ -24,7 +24,7 @@ char *rcs_opcode="$Id: opcode.c,v 3.29 1994/12/27 20:53:15 celes Exp roberto $";
 
 #define STACK_BUFFER (STACKGAP+128)
 
-typedef unsigned int StkId;  /* index to stack elements */
+typedef int StkId;  /* index to stack elements */
 
 static Long    maxstack = 0L;
 static Object *stack = NULL;
@@ -103,8 +103,12 @@ static void lua_checkstack (StkId n)
   StkId t;
   if (stack == NULL)
     lua_initstack();
+  if (maxstack >= MAX_INT)
+    lua_error("stack size overflow");
   t = top-stack;
   maxstack *= 2;
+  if (maxstack >= MAX_INT)
+    maxstack = MAX_INT;
   stack = growvector(stack, maxstack, Object);
   top = stack + t;
  }