Bläddra i källkod

little better error messages for internal arrays overflows

Roberto Ierusalimschy 19 år sedan
förälder
incheckning
d5a23dde90
3 ändrade filer med 9 tillägg och 10 borttagningar
  1. 4 5
      lcode.c
  2. 2 2
      lmem.c
  3. 3 3
      lparser.c

+ 4 - 5
lcode.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lcode.c,v 2.26 2006/06/22 16:12:59 roberto Exp roberto $
+** $Id: lcode.c,v 2.27 2006/08/07 19:14:30 roberto Exp roberto $
 ** Code generator for Lua
 ** See Copyright Notice in lua.h
 */
@@ -235,8 +235,7 @@ static int addk (FuncState *fs, TValue *key, TValue *v) {
     int oldsize = f->sizek;
     k = fs->nk;
     setnvalue(idx, cast_num(k));
-    luaM_growvector(L, f->k, k, f->sizek, TValue, MAXARG_Bx,
-                       "constant table overflow");
+    luaM_growvector(L, f->k, k, f->sizek, TValue, MAXARG_Bx, "constant table");
     while (oldsize < f->sizek) setnilvalue(&f->k[oldsize++]);
     setobj(L, &f->k[k], v);
     fs->nk++;
@@ -787,11 +786,11 @@ static int luaK_code (FuncState *fs, Instruction i, int line) {
   dischargejpc(fs);  /* `pc' will change */
   /* put new instruction in code array */
   luaM_growvector(fs->L, f->code, fs->pc, f->sizecode, Instruction,
-                  MAX_INT, "code size overflow");
+                  MAX_INT, "code size");
   f->code[fs->pc] = i;
   /* save corresponding line information */
   luaM_growvector(fs->L, f->lineinfo, fs->pc, f->sizelineinfo, int,
-                  MAX_INT, "code size overflow");
+                  MAX_INT, "code size");
   f->lineinfo[fs->pc] = line;
   return fs->pc++;
 }

+ 2 - 2
lmem.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lmem.c,v 1.70 2005/12/26 13:35:47 roberto Exp roberto $
+** $Id: lmem.c,v 1.71 2006/07/11 15:53:29 roberto Exp roberto $
 ** Interface to Memory Manager
 ** See Copyright Notice in lua.h
 */
@@ -50,7 +50,7 @@ void *luaM_growaux_ (lua_State *L, void *block, int *size, size_t size_elems,
   int newsize;
   if (*size >= limit/2) {  /* cannot double it? */
     if (*size >= limit)  /* cannot grow even a little? */
-      luaG_runerror(L, errormsg);
+      luaG_runerror(L, "%s overflow (limit is %d)", errormsg, limit);
     newsize = limit;  /* still have at least one free place */
   }
   else {

+ 3 - 3
lparser.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lparser.c,v 2.45 2006/07/12 19:02:50 roberto Exp roberto $
+** $Id: lparser.c,v 2.46 2006/08/15 19:59:20 roberto Exp roberto $
 ** Lua Parser
 ** See Copyright Notice in lua.h
 */
@@ -145,7 +145,7 @@ static int registerlocalvar (LexState *ls, TString *varname) {
   Proto *f = fs->f;
   int oldsize = f->sizelocvars;
   luaM_growvector(ls->L, f->locvars, fs->nlocvars, f->sizelocvars,
-                  LocVar, SHRT_MAX, "too many local variables");
+                  LocVar, SHRT_MAX, "local-variable table");
   while (oldsize < f->sizelocvars) f->locvars[oldsize++].varname = NULL;
   f->locvars[fs->nlocvars].varname = varname;
   luaC_objbarrier(ls->L, f, varname);
@@ -314,7 +314,7 @@ static void pushclosure (LexState *ls, FuncState *func, expdesc *v) {
   int oldsize = f->sizep;
   int i;
   luaM_growvector(ls->L, f->p, fs->np, f->sizep, Proto *,
-                  MAXARG_Bx, "constant table overflow");
+                  MAXARG_Bx, "constant table");
   while (oldsize < f->sizep) f->p[oldsize++] = NULL;
   f->p[fs->np++] = func->f;
   luaC_objbarrier(ls->L, f, func->f);