From 3d54b42d59bcc1b31a369f3497ac22745d63cae6 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 30 Sep 2024 14:01:42 -0300 Subject: 'objsize' broke in smaller pieces --- lfunc.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'lfunc.c') diff --git a/lfunc.c b/lfunc.c index d650c000..2b041281 100644 --- a/lfunc.c +++ b/lfunc.c @@ -264,6 +264,21 @@ Proto *luaF_newproto (lua_State *L) { } +size_t luaF_protosize (Proto *p) { + size_t sz = sizeof(Proto) + + cast_uint(p->sizep) * sizeof(Proto*) + + cast_uint(p->sizek) * sizeof(TValue) + + cast_uint(p->sizelocvars) * sizeof(LocVar) + + cast_uint(p->sizeupvalues) * sizeof(Upvaldesc); + if (!(p->flag & PF_FIXED)) { + sz += cast_uint(p->sizecode) * sizeof(Instruction) + + cast_uint(p->sizelineinfo) * sizeof(lu_byte) + + cast_uint(p->sizeabslineinfo) * sizeof(AbsLineInfo); + } + return sz; +} + + void luaF_freeproto (lua_State *L, Proto *f) { if (!(f->flag & PF_FIXED)) { luaM_freearray(L, f->code, cast_sizet(f->sizecode)); -- cgit v1.2.3-55-g6feb