diff options
Diffstat (limited to 'lfunc.c')
-rw-r--r-- | lfunc.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -253,7 +253,7 @@ Proto *luaF_newproto (lua_State *L) { | |||
253 | f->upvalues = NULL; | 253 | f->upvalues = NULL; |
254 | f->sizeupvalues = 0; | 254 | f->sizeupvalues = 0; |
255 | f->numparams = 0; | 255 | f->numparams = 0; |
256 | f->is_vararg = 0; | 256 | f->flag = 0; |
257 | f->maxstacksize = 0; | 257 | f->maxstacksize = 0; |
258 | f->locvars = NULL; | 258 | f->locvars = NULL; |
259 | f->sizelocvars = 0; | 259 | f->sizelocvars = 0; |
@@ -265,10 +265,12 @@ Proto *luaF_newproto (lua_State *L) { | |||
265 | 265 | ||
266 | 266 | ||
267 | void luaF_freeproto (lua_State *L, Proto *f) { | 267 | void luaF_freeproto (lua_State *L, Proto *f) { |
268 | luaM_freearray(L, f->code, f->sizecode); | 268 | if (!(f->flag & PF_FIXED)) { |
269 | luaM_freearray(L, f->code, f->sizecode); | ||
270 | luaM_freearray(L, f->lineinfo, f->sizelineinfo); | ||
271 | } | ||
269 | luaM_freearray(L, f->p, f->sizep); | 272 | luaM_freearray(L, f->p, f->sizep); |
270 | luaM_freearray(L, f->k, f->sizek); | 273 | luaM_freearray(L, f->k, f->sizek); |
271 | luaM_freearray(L, f->lineinfo, f->sizelineinfo); | ||
272 | luaM_freearray(L, f->abslineinfo, f->sizeabslineinfo); | 274 | luaM_freearray(L, f->abslineinfo, f->sizeabslineinfo); |
273 | luaM_freearray(L, f->locvars, f->sizelocvars); | 275 | luaM_freearray(L, f->locvars, f->sizelocvars); |
274 | luaM_freearray(L, f->upvalues, f->sizeupvalues); | 276 | luaM_freearray(L, f->upvalues, f->sizeupvalues); |