aboutsummaryrefslogtreecommitdiff
path: root/lundump.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-12-20 11:14:52 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2022-12-20 11:14:52 -0300
commit7d6a97e42bc3328b9c5ec1dabbd7e280e81c3efd (patch)
tree24c32dddd2b6df02d22bdcacc0636a18f37f7471 /lundump.c
parentd70a0c91ad42275af1f6f1b6e37c604442b3f0d1 (diff)
downloadlua-7d6a97e42bc3328b9c5ec1dabbd7e280e81c3efd.tar.gz
lua-7d6a97e42bc3328b9c5ec1dabbd7e280e81c3efd.tar.bz2
lua-7d6a97e42bc3328b9c5ec1dabbd7e280e81c3efd.zip
Dump doesn't need to reuse 'source'
All strings are being reused now, including 'source'.
Diffstat (limited to 'lundump.c')
-rw-r--r--lundump.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/lundump.c b/lundump.c
index 4048fdea..3bff463f 100644
--- a/lundump.c
+++ b/lundump.c
@@ -162,7 +162,7 @@ static void loadCode (LoadState *S, Proto *f) {
162} 162}
163 163
164 164
165static void loadFunction(LoadState *S, Proto *f, TString *psource); 165static void loadFunction(LoadState *S, Proto *f);
166 166
167 167
168static void loadConstants (LoadState *S, Proto *f) { 168static void loadConstants (LoadState *S, Proto *f) {
@@ -211,7 +211,7 @@ static void loadProtos (LoadState *S, Proto *f) {
211 for (i = 0; i < n; i++) { 211 for (i = 0; i < n; i++) {
212 f->p[i] = luaF_newproto(S->L); 212 f->p[i] = luaF_newproto(S->L);
213 luaC_objbarrier(S->L, f, f->p[i]); 213 luaC_objbarrier(S->L, f, f->p[i]);
214 loadFunction(S, f->p[i], f->source); 214 loadFunction(S, f->p[i]);
215 } 215 }
216} 216}
217 217
@@ -266,10 +266,8 @@ static void loadDebug (LoadState *S, Proto *f) {
266} 266}
267 267
268 268
269static void loadFunction (LoadState *S, Proto *f, TString *psource) { 269static void loadFunction (LoadState *S, Proto *f) {
270 f->source = loadStringN(S, f); 270 f->source = loadStringN(S, f);
271 if (f->source == NULL) /* no source in dump? */
272 f->source = psource; /* reuse parent's source */
273 f->linedefined = loadInt(S); 271 f->linedefined = loadInt(S);
274 f->lastlinedefined = loadInt(S); 272 f->lastlinedefined = loadInt(S);
275 f->numparams = loadByte(S); 273 f->numparams = loadByte(S);
@@ -342,7 +340,7 @@ LClosure *luaU_undump(lua_State *L, ZIO *Z, const char *name) {
342 luaD_inctop(L); 340 luaD_inctop(L);
343 cl->p = luaF_newproto(L); 341 cl->p = luaF_newproto(L);
344 luaC_objbarrier(L, cl, cl->p); 342 luaC_objbarrier(L, cl, cl->p);
345 loadFunction(&S, cl->p, NULL); 343 loadFunction(&S, cl->p);
346 lua_assert(cl->nupvalues == cl->p->sizeupvalues); 344 lua_assert(cl->nupvalues == cl->p->sizeupvalues);
347 luai_verifycode(L, cl->p); 345 luai_verifycode(L, cl->p);
348 L->top.p--; /* pop table */ 346 L->top.p--; /* pop table */