'objsize' returns 'l_mem'

Sums of size_t may not fit in a size_t.
This commit is contained in:
Roberto Ierusalimschy
2024-11-15 12:04:53 -03:00
parent d4247befa1
commit a4762b6ffe
7 changed files with 40 additions and 25 deletions

10
lfunc.c
View File

@@ -264,16 +264,16 @@ Proto *luaF_newproto (lua_State *L) {
}
size_t luaF_protosize (Proto *p) {
size_t sz = sizeof(Proto)
lu_mem luaF_protosize (Proto *p) {
lu_mem sz = cast(lu_mem, 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);
sz += cast_uint(p->sizecode) * sizeof(Instruction);
sz += cast_uint(p->sizelineinfo) * sizeof(lu_byte);
sz += cast_uint(p->sizeabslineinfo) * sizeof(AbsLineInfo);
}
return sz;
}