mirror of
https://github.com/lua/lua
synced 2024-11-22 21:01:26 +03:00
little better error messages for internal arrays overflows
This commit is contained in:
parent
a7c9e45c64
commit
d5a23dde90
9
lcode.c
9
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++;
|
||||
}
|
||||
|
4
lmem.c
4
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 {
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user