diff options
Diffstat (limited to 'DIFFS')
-rw-r--r-- | DIFFS | 480 |
1 files changed, 275 insertions, 205 deletions
@@ -1,224 +1,294 @@ -diff -r lua-5.0/COPYRIGHT lua-5.0.2/COPYRIGHT +diff -r lua-5.0.2/COPYRIGHT lua-5.0.3/COPYRIGHT 12c12 -< Copyright (C) 2003 Tecgraf, PUC-Rio. +< Copyright (C) 2003-2004 Tecgraf, PUC-Rio. --- -> Copyright (C) 2003-2004 Tecgraf, PUC-Rio. -diff -r lua-5.0/Makefile lua-5.0.2/Makefile -98a99,101 -> newer: -> @find . -newer MANIFEST -type f -> -diff -r lua-5.0/doc/readme.html lua-5.0.2/doc/readme.html -16c16 -< <LI><A HREF="manual.html">Reference manual</A> ---- -> <LI><A HREF="contents.html">Reference manual</A> -31c31 -< Tue Apr 1 14:35:18 EST 2003 ---- -> Thu Mar 11 23:08:56 BRT 2004 -diff -r lua-5.0/include/lua.h lua-5.0.2/include/lua.h +> Copyright (C) 2003-2006 Tecgraf, PUC-Rio. +diff -r lua-5.0.2/include/lua.h lua-5.0.3/include/lua.h 2c2 -< ** $Id: lua.h,v 1.175 2003/03/18 12:31:39 roberto Exp $ +< ** $Id: lua.h,v 1.175b 2003/03/18 12:31:39 roberto Exp $ --- -> ** $Id: lua.h,v 1.175b 2003/03/18 12:31:39 roberto Exp $ +> ** $Id: lua.h,v 1.175c 2003/03/18 12:31:39 roberto Exp $ 17,18c17,18 -< #define LUA_VERSION "Lua 5.0" -< #define LUA_COPYRIGHT "Copyright (C) 1994-2003 Tecgraf, PUC-Rio" +< #define LUA_VERSION "Lua 5.0.2" +< #define LUA_COPYRIGHT "Copyright (C) 1994-2004 Tecgraf, PUC-Rio" --- -> #define LUA_VERSION "Lua 5.0.2" -> #define LUA_COPYRIGHT "Copyright (C) 1994-2004 Tecgraf, PUC-Rio" +> #define LUA_VERSION "Lua 5.0.3" +> #define LUA_COPYRIGHT "Copyright (C) 1994-2006 Tecgraf, PUC-Rio" 368c368 -< * Copyright (C) 1994-2003 Tecgraf, PUC-Rio. All rights reserved. +< * Copyright (C) 1994-2004 Tecgraf, PUC-Rio. All rights reserved. +--- +> * Copyright (C) 1994-2006 Tecgraf, PUC-Rio. All rights reserved. +diff -r lua-5.0.2/src/lapi.c lua-5.0.3/src/lapi.c +2c2 +< ** $Id: lapi.c,v 1.235 2003/04/07 14:36:08 roberto Exp $ +--- +> ** $Id: lapi.c,v 1.235a 2003/04/07 14:36:08 roberto Exp $ +882c882 +< if (n > f->c.nupvalues) return NULL; --- -> * Copyright (C) 1994-2004 Tecgraf, PUC-Rio. All rights reserved. -diff -r lua-5.0/src/ldo.c lua-5.0.2/src/ldo.c +> if (!(1 <= n && n <= f->c.nupvalues)) return NULL; +888c888 +< if (n > p->sizeupvalues) return NULL; +--- +> if (!(1 <= n && n <= p->sizeupvalues)) return NULL; +diff -r lua-5.0.2/src/lcode.c lua-5.0.3/src/lcode.c 2c2 -< ** $Id: ldo.c,v 1.217 2003/04/03 13:35:34 roberto Exp $ ---- -> ** $Id: ldo.c,v 1.217a 2003/04/03 13:35:34 roberto Exp $ -325,326c325 -< if (nargs >= L->top - L->base) -< luaG_runerror(L, "cannot resume dead coroutine"); ---- -> lua_assert(nargs < L->top - L->base); -329c328,329 -< else if (ci->state & CI_YIELD) { /* inside a yield? */ ---- -> else { /* inside a yield */ -> lua_assert(ci->state & CI_YIELD); -344,345d343 -< else -< luaG_runerror(L, "cannot resume non-suspended coroutine"); -351a350,358 -> static int resume_error (lua_State *L, const char *msg) { -> L->top = L->ci->base; -> setsvalue2s(L->top, luaS_new(L, msg)); -> incr_top(L); -> lua_unlock(L); -> return LUA_ERRRUN; +< ** $Id: lcode.c,v 1.117 2003/04/03 13:35:34 roberto Exp $ +--- +> ** $Id: lcode.c,v 1.117a 2003/04/03 13:35:34 roberto Exp $ +105c105,108 +< if (GET_OPCODE(i) != OP_TEST || GETARG_C(i) != cond) return 1; +--- +> if (GET_OPCODE(i) != OP_TEST || +> GETARG_A(i) != NO_REG || +> GETARG_C(i) != cond) +> return 1; +117,118c120,130 +< static void luaK_patchlistaux (FuncState *fs, int list, +< int ttarget, int treg, int ftarget, int freg, int dtarget) { +--- +> static void removevalues (FuncState *fs, int list) { +> for (; list != NO_JUMP; list = luaK_getjump(fs, list)) { +> Instruction *i = getjumpcontrol(fs, list); +> if (GET_OPCODE(*i) == OP_TEST) +> patchtestreg(i, NO_REG); +> } > } > > -355a363,368 -> if (L->ci == L->base_ci) { -> if (nargs >= L->top - L->base) -> return resume_error(L, "cannot resume dead coroutine"); -> } -> else if (!(L->ci->state & CI_YIELD)) /* not inside a yield? */ -> return resume_error(L, "cannot resume non-suspended coroutine"); -diff -r lua-5.0/src/lgc.c lua-5.0.2/src/lgc.c -2c2 -< ** $Id: lgc.c,v 1.171 2003/04/03 13:35:34 roberto Exp $ ---- -> ** $Id: lgc.c,v 1.171a 2003/04/03 13:35:34 roberto Exp $ -113c113,114 -< void luaC_separateudata (lua_State *L) { ---- -> size_t luaC_separateudata (lua_State *L) { -> size_t deadmem = 0; -127a129 -> deadmem += sizeudata(gcotou(curr)->uv.len); -136a139 -> return deadmem; -247c250 -< if (!(ci->state & CI_C) && lim < ci->top) ---- -> if (lim < ci->top) -390c393 -< static void checkSizes (lua_State *L) { ---- -> static void checkSizes (lua_State *L, size_t deadmem) { -400c403 -< G(L)->GCthreshold = 2*G(L)->nblocks; /* new threshold */ ---- -> G(L)->GCthreshold = 2*G(L)->nblocks - deadmem; /* new threshold */ -454c457,458 -< static void mark (lua_State *L) { ---- -> static size_t mark (lua_State *L) { -> size_t deadmem; -467c471 -< luaC_separateudata(L); /* separate userdata to be preserved */ ---- -> deadmem = luaC_separateudata(L); /* separate userdata to be preserved */ -475a480 -> return deadmem; -480c485 -< mark(L); ---- -> size_t deadmem = mark(L); -482c487 -< checkSizes(L); ---- -> checkSizes(L, deadmem); -diff -r lua-5.0/src/lgc.h lua-5.0.2/src/lgc.h +> static void luaK_patchlistaux (FuncState *fs, int list, int vtarget, int reg, +> int dtarget) { +122,136c134,136 +< if (GET_OPCODE(*i) != OP_TEST) { +< lua_assert(dtarget != NO_JUMP); +< luaK_fixjump(fs, list, dtarget); /* jump to default target */ +< } +< else { +< if (GETARG_C(*i)) { +< lua_assert(ttarget != NO_JUMP); +< patchtestreg(i, treg); +< luaK_fixjump(fs, list, ttarget); +< } +< else { +< lua_assert(ftarget != NO_JUMP); +< patchtestreg(i, freg); +< luaK_fixjump(fs, list, ftarget); +< } +--- +> if (GET_OPCODE(*i) == OP_TEST && GETARG_A(*i) == NO_REG) { +> patchtestreg(i, reg); +> luaK_fixjump(fs, list, vtarget); +137a138,139 +> else +> luaK_fixjump(fs, list, dtarget); /* jump to default target */ +144c146 +< luaK_patchlistaux(fs, fs->jpc, fs->pc, NO_REG, fs->pc, NO_REG, fs->pc); +--- +> luaK_patchlistaux(fs, fs->jpc, fs->pc, NO_REG, fs->pc); +154c156 +< luaK_patchlistaux(fs, list, target, NO_REG, target, NO_REG, target); +--- +> luaK_patchlistaux(fs, list, target, NO_REG, target); +357,358c359,360 +< luaK_patchlistaux(fs, e->f, p_f, NO_REG, final, reg, p_f); +< luaK_patchlistaux(fs, e->t, final, reg, p_t, NO_REG, p_t); +--- +> luaK_patchlistaux(fs, e->f, final, reg, p_f); +> luaK_patchlistaux(fs, e->t, final, reg, p_t); +476c478 +< return luaK_condjump(fs, OP_TEST, NO_REG, GETARG_B(ie), !cond); +--- +> return luaK_condjump(fs, OP_TEST, GETARG_B(ie), GETARG_B(ie), !cond); +566a569,570 +> removevalues(fs, e->f); +> removevalues(fs, e->t); +diff -r lua-5.0.2/src/lfunc.c lua-5.0.3/src/lfunc.c 2c2 -< ** $Id: lgc.h,v 1.19 2003/02/28 19:45:15 roberto Exp $ ---- -> ** $Id: lgc.h,v 1.19a 2003/02/28 19:45:15 roberto Exp $ -18c18 -< void luaC_separateudata (lua_State *L); ---- -> size_t luaC_separateudata (lua_State *L); -diff -r lua-5.0/src/lib/lbaselib.c lua-5.0.2/src/lib/lbaselib.c +< ** $Id: lfunc.c,v 1.67 2003/03/18 12:50:04 roberto Exp $ +--- +> ** $Id: lfunc.c,v 1.67a 2003/03/18 12:50:04 roberto Exp $ +19,26d18 +< +< +< #define sizeCclosure(n) (cast(int, sizeof(CClosure)) + \ +< cast(int, sizeof(TObject)*((n)-1))) +< +< #define sizeLclosure(n) (cast(int, sizeof(LClosure)) + \ +< cast(int, sizeof(TObject *)*((n)-1))) +< +diff -r lua-5.0.2/src/lfunc.h lua-5.0.3/src/lfunc.h 2c2 -< ** $Id: lbaselib.c,v 1.130 2003/04/03 13:35:34 roberto Exp $ +< ** $Id: lfunc.h,v 1.21 2003/03/18 12:50:04 roberto Exp $ --- -> ** $Id: lbaselib.c,v 1.130b 2003/04/03 13:35:34 roberto Exp $ -276a277 -> int n = lua_gettop(L); -280c281 -< return lua_gettop(L) - 1; ---- -> return lua_gettop(L) - n; -327c328 -< char buff[64]; ---- -> char buff[128]; -diff -r lua-5.0/src/lib/liolib.c lua-5.0.2/src/lib/liolib.c -2c2 -< ** $Id: liolib.c,v 2.39 2003/03/19 21:16:12 roberto Exp $ ---- -> ** $Id: liolib.c,v 2.39a 2003/03/19 21:16:12 roberto Exp $ -161c161 -< if (lua_isnone(L, 1)) { ---- -> if (lua_isnone(L, 1) && lua_type(L, lua_upvalueindex(1)) == LUA_TTABLE) { -178c178 -< char buff[32]; ---- -> char buff[128]; -diff -r lua-5.0/src/lparser.c lua-5.0.2/src/lparser.c +> ** $Id: lfunc.h,v 1.21a 2003/03/18 12:50:04 roberto Exp $ +11a12,18 +> +> +> #define sizeCclosure(n) (cast(int, sizeof(CClosure)) + \ +> cast(int, sizeof(TObject)*((n)-1))) +> +> #define sizeLclosure(n) (cast(int, sizeof(LClosure)) + \ +> cast(int, sizeof(TObject *)*((n)-1))) +diff -r lua-5.0.2/src/lgc.c lua-5.0.3/src/lgc.c 2c2 -< ** $Id: lparser.c,v 1.208 2003/04/03 13:35:34 roberto Exp $ ---- -> ** $Id: lparser.c,v 1.208a 2003/04/03 13:35:34 roberto Exp $ -1143a1144 -> FuncState *fs = ls->fs; -1145c1146,1147 -< init_exp(&v, VLOCAL, ls->fs->freereg++); ---- -> init_exp(&v, VLOCAL, fs->freereg); -> luaK_reserveregs(fs, 1); -1148c1150,1152 -< luaK_storevar(ls->fs, &v, &b); ---- -> luaK_storevar(fs, &v, &b); -> /* debug information will only see the variable after this point! */ -> getlocvar(fs, fs->nactvar - 1).startpc = fs->pc; -diff -r lua-5.0/src/luac/Makefile lua-5.0.2/src/luac/Makefile -16c16 -< $(CC) -o $@ $(MYLDFLAGS) $(OBJS) -L$(LIB) -llua -llualib $(EXTRA_LIBS) ---- -> $(CC) -o $@ $(MYLDFLAGS) $(OBJS) -L$(LIB) -llua -llualib $(EXTRA_LIBS) $(DLLIB) -diff -r lua-5.0/src/luac/luac.c lua-5.0.2/src/luac/luac.c +< ** $Id: lgc.c,v 1.171a 2003/04/03 13:35:34 roberto Exp $ +--- +> ** $Id: lgc.c,v 1.171b 2003/04/03 13:35:34 roberto Exp $ +221,224c221,222 +< if (!u->marked) { +< markobject(st, &u->value); +< u->marked = 1; +< } +--- +> markobject(st, u->v); +> u->marked = 1; +261c259,260 +< static void propagatemarks (GCState *st) { +--- +> static lu_mem propagatemarks (GCState *st) { +> lu_mem mf = 0; +267a267,268 +> mf += sizeof(Table) + sizeof(TObject) * h->sizearray + +> sizeof(Node) * sizenode(h); +273a275,276 +> mf += (cl->c.isC) ? sizeCclosure(cl->c.nupvalues) : +> sizeLclosure(cl->l.nupvalues); +279a283,284 +> mf += sizeof(lua_State) + sizeof(TObject) * th->stacksize + +> sizeof(CallInfo) * th->size_ci; +285a291 +> /* do not need 'mf' for this case (cannot happen inside a udata) */ +290a297 +> return mf; +371c378 +< if (curr->gch.marked > limit) { +--- +> if ((curr->gch.marked & ~(KEYWEAK | VALUEWEAK)) > limit) { +473c480 +< propagatemarks(&st); /* remark, to propagate `preserveness' */ +--- +> deadmem += propagatemarks(&st); /* remark, to propagate `preserveness' */ +diff -r lua-5.0.2/src/lib/lbaselib.c lua-5.0.3/src/lib/lbaselib.c 2c2 -< ** $Id: luac.c,v 1.44 2003/04/07 20:34:20 lhf Exp $ ---- -> ** $Id: luac.c,v 1.44a 2003/04/07 20:34:20 lhf Exp $ -184a185 -> lua_lock(L); -185a187 -> lua_unlock(L); -diff -r lua-5.0/src/lvm.c lua-5.0.2/src/lvm.c +< ** $Id: lbaselib.c,v 1.130b 2003/04/03 13:35:34 roberto Exp $ +--- +> ** $Id: lbaselib.c,v 1.130c 2003/04/03 13:35:34 roberto Exp $ +175a176 +> lua_settop(L, 2); +183a185 +> lua_settop(L, 3); +diff -r lua-5.0.2/src/lib/liolib.c lua-5.0.3/src/lib/liolib.c 2c2 -< ** $Id: lvm.c,v 1.284 2003/04/03 13:35:34 roberto Exp $ ---- -> ** $Id: lvm.c,v 1.284b 2003/04/03 13:35:34 roberto Exp $ -69c69 -< if (mask > LUA_MASKLINE) { /* instruction-hook set? */ ---- -> if (mask & LUA_MASKCOUNT) { /* instruction-hook set? */ -402,403c402,403 -< L->ci->u.l.pc = &pc; -< if (L->hookmask & LUA_MASKCALL) ---- -> if (L->hookmask & LUA_MASKCALL) { -> L->ci->u.l.pc = &pc; -404a405 -> } -405a407 -> L->ci->u.l.pc = &pc; -676,678c678 -< lua_assert(ci->u.l.pc == &pc && -< ttisfunction(ci->base - 1) && -< (ci->state & CI_SAVEDPC)); ---- -> lua_assert(ttisfunction(ci->base - 1) && (ci->state & CI_SAVEDPC)); -779a780 +< ** $Id: liolib.c,v 2.39a 2003/03/19 21:16:12 roberto Exp $ +--- +> ** $Id: liolib.c,v 2.39b 2003/03/19 21:16:12 roberto Exp $ +22a23,28 +> typedef struct FileHandle { +> FILE *f; +> int ispipe; +> } FileHandle; +> > -diff -r lua-5.0/test/luac.lua lua-5.0.2/test/luac.lua -4,6c4,6 -< assert(arg[1]~=nil,"usage: lua luac.lua file.lua") -< f=assert(io.open("luac.out","w")) -< f:write(string.dump(loadfile(arg[1]))) ---- -> assert(arg[1]~=nil and arg[2]==nil,"usage: lua luac.lua file.lua") -> f=assert(io.open("luac.out","wb")) -> f:write(string.dump(assert(loadfile(arg[1])))) -diff -r lua-5.0/test/table.lua lua-5.0.2/test/table.lua -8c8 -< local _,_,a,b=string.find(l,'"?(%w+)"?%s*(.*)$') ---- -> local _,_,a,b=string.find(l,'"?([_%w]+)"?%s*(.*)$') +89,92c95,98 +< static FILE **topfile (lua_State *L, int findex) { +< FILE **f = (FILE **)luaL_checkudata(L, findex, FILEHANDLE); +< if (f == NULL) luaL_argerror(L, findex, "bad file"); +< return f; +--- +> static FileHandle *topfile (lua_State *L, int findex) { +> FileHandle *fh = (FileHandle *)luaL_checkudata(L, findex, FILEHANDLE); +> if (fh == NULL) luaL_argerror(L, findex, "bad file"); +> return fh; +97,99c103,105 +< FILE **f = (FILE **)luaL_checkudata(L, 1, FILEHANDLE); +< if (f == NULL) lua_pushnil(L); +< else if (*f == NULL) +--- +> FileHandle *fh = (FileHandle *)luaL_checkudata(L, 1, FILEHANDLE); +> if (fh == NULL) lua_pushnil(L); +> else if (fh->f == NULL) +107,109c113,117 +< static FILE *tofile (lua_State *L, int findex) { +< FILE **f = topfile(L, findex); +< if (*f == NULL) +--- +> #define tofile(L,i) (tofileh(L,i)->f) +> +> static FileHandle *tofileh (lua_State *L, int findex) { +> FileHandle *fh = topfile(L, findex); +> if (fh->f == NULL) +111c119 +< return *f; +--- +> return fh; +115a124,125 +> #define newfile(L) (&(newfileh(L)->f)) +> +121,123c131,134 +< static FILE **newfile (lua_State *L) { +< FILE **pf = (FILE **)lua_newuserdata(L, sizeof(FILE *)); +< *pf = NULL; /* file handle is currently `closed' */ +--- +> static FileHandle *newfileh (lua_State *L) { +> FileHandle *fh = (FileHandle *)lua_newuserdata(L, sizeof(FileHandle)); +> fh->f = NULL; /* file handle is currently `closed' */ +> fh->ispipe = 0; +126c137 +< return pf; +--- +> return fh; +148c159,160 +< FILE *f = tofile(L, 1); +--- +> FileHandle *fh = tofileh(L, 1); +> FILE *f = fh->f; +152,154c164,165 +< int ok = (pclose(f) != -1) || (fclose(f) == 0); +< if (ok) +< *(FILE **)lua_touserdata(L, 1) = NULL; /* mark file as closed */ +--- +> int ok = fh->ispipe ? (pclose(f) != -1) : (fclose(f) == 0); +> fh->f = NULL; /* mark file as closed */ +170,171c181,182 +< FILE **f = topfile(L, 1); +< if (*f != NULL) /* ignore closed files */ +--- +> FileHandle *fh = topfile(L, 1); +> if (fh->f != NULL) /* ignore closed files */ +179,180c190,191 +< FILE **f = topfile(L, 1); +< if (*f == NULL) +--- +> FileHandle *fh = topfile(L, 1); +> if (fh->f == NULL) +205,207c216,219 +< FILE **pf = newfile(L); +< *pf = popen(filename, mode); +< return (*pf == NULL) ? pushresult(L, 0, filename) : 1; +--- +> FileHandle *fh = newfileh(L); +> fh->f = popen(filename, mode); +> fh->ispipe = 1; +> return (fh->f == NULL) ? pushresult(L, 0, filename) : 1; +diff -r lua-5.0.2/src/lvm.c lua-5.0.3/src/lvm.c +2c2 +< ** $Id: lvm.c,v 1.284b 2003/04/03 13:35:34 roberto Exp $ +--- +> ** $Id: lvm.c,v 1.284c 2003/04/03 13:35:34 roberto Exp $ +324,325c324 +< lu_mem tl = cast(lu_mem, tsvalue(top-1)->tsv.len) + +< cast(lu_mem, tsvalue(top-2)->tsv.len); +--- +> size_t tl = tsvalue(top-1)->tsv.len; +328,330c327,331 +< while (n < total && tostring(L, top-n-1)) { /* collect total length */ +< tl += tsvalue(top-n-1)->tsv.len; +< n++; +--- +> /* collect total length */ +> for (n = 1; n < total && tostring(L, top-n-1); n++) { +> size_t l = tsvalue(top-n-1)->tsv.len; +> if (l >= MAX_SIZET - tl) luaG_runerror(L, "string length overflow"); +> tl += l; +332d332 +< if (tl > MAX_SIZET) luaG_runerror(L, "string size overflow"); |