diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-09-30 14:01:42 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-09-30 14:01:42 -0300 |
commit | 3d54b42d59bcc1b31a369f3497ac22745d63cae6 (patch) | |
tree | 283f8d935865e1cb6d01e25f3d745f91229d22c8 /lfunc.c | |
parent | e4f418f07c7349f5ff844fbdc9a3b37b488113a5 (diff) | |
download | lua-3d54b42d59bcc1b31a369f3497ac22745d63cae6.tar.gz lua-3d54b42d59bcc1b31a369f3497ac22745d63cae6.tar.bz2 lua-3d54b42d59bcc1b31a369f3497ac22745d63cae6.zip |
'objsize' broke in smaller pieces
Diffstat (limited to 'lfunc.c')
-rw-r--r-- | lfunc.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -264,6 +264,21 @@ Proto *luaF_newproto (lua_State *L) { | |||
264 | } | 264 | } |
265 | 265 | ||
266 | 266 | ||
267 | size_t luaF_protosize (Proto *p) { | ||
268 | size_t sz = sizeof(Proto) | ||
269 | + cast_uint(p->sizep) * sizeof(Proto*) | ||
270 | + cast_uint(p->sizek) * sizeof(TValue) | ||
271 | + cast_uint(p->sizelocvars) * sizeof(LocVar) | ||
272 | + cast_uint(p->sizeupvalues) * sizeof(Upvaldesc); | ||
273 | if (!(p->flag & PF_FIXED)) { | ||
274 | sz += cast_uint(p->sizecode) * sizeof(Instruction) | ||
275 | + cast_uint(p->sizelineinfo) * sizeof(lu_byte) | ||
276 | + cast_uint(p->sizeabslineinfo) * sizeof(AbsLineInfo); | ||
277 | } | ||
278 | return sz; | ||
279 | } | ||
280 | |||
281 | |||
267 | void luaF_freeproto (lua_State *L, Proto *f) { | 282 | void luaF_freeproto (lua_State *L, Proto *f) { |
268 | if (!(f->flag & PF_FIXED)) { | 283 | if (!(f->flag & PF_FIXED)) { |
269 | luaM_freearray(L, f->code, cast_sizet(f->sizecode)); | 284 | luaM_freearray(L, f->code, cast_sizet(f->sizecode)); |