summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/lua/src/lundump.c
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/lua/src/lundump.c')
-rw-r--r--3rdparty/lua/src/lundump.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/3rdparty/lua/src/lundump.c b/3rdparty/lua/src/lundump.c
index 5aa55c44578..e8d92a8534f 100644
--- a/3rdparty/lua/src/lundump.c
+++ b/3rdparty/lua/src/lundump.c
@@ -81,7 +81,7 @@ static size_t loadUnsigned (LoadState *S, size_t limit) {
static size_t loadSize (LoadState *S) {
- return loadUnsigned(S, ~(size_t)0);
+ return loadUnsigned(S, MAX_SIZET);
}
@@ -120,10 +120,10 @@ static TString *loadStringN (LoadState *S, Proto *p) {
}
else { /* long string */
ts = luaS_createlngstrobj(L, size); /* create string */
- setsvalue2s(L, L->top, ts); /* anchor it ('loadVector' can GC) */
+ setsvalue2s(L, L->top.p, ts); /* anchor it ('loadVector' can GC) */
luaD_inctop(L);
- loadVector(S, getstr(ts), size); /* load directly in final place */
- L->top--; /* pop string */
+ loadVector(S, getlngstr(ts), size); /* load directly in final place */
+ L->top.p--; /* pop string */
}
luaC_objbarrier(L, p, ts);
return ts;
@@ -248,6 +248,8 @@ static void loadDebug (LoadState *S, Proto *f) {
f->locvars[i].endpc = loadInt(S);
}
n = loadInt(S);
+ if (n != 0) /* does it have debug information? */
+ n = f->sizeupvalues; /* must be this many */
for (i = 0; i < n; i++)
f->upvalues[i].name = loadStringN(S, f);
}
@@ -321,7 +323,7 @@ LClosure *luaU_undump(lua_State *L, ZIO *Z, const char *name) {
S.Z = Z;
checkHeader(&S);
cl = luaF_newLclosure(L, loadByte(&S));
- setclLvalue2s(L, L->top, cl);
+ setclLvalue2s(L, L->top.p, cl);
luaD_inctop(L);
cl->p = luaF_newproto(L);
luaC_objbarrier(L, cl, cl->p);