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)); |
