Berry fix crash when generating bytecode of empty class (#17688)

This commit is contained in:
s-hadinger 2023-01-12 22:51:43 +01:00 committed by GitHub
parent 1acd9b867c
commit 9ba3c26a8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 6 deletions

View File

@ -160,17 +160,19 @@ static bstring** save_members(bvm *vm, void *fp, bclass *c, int nvar)
static void save_class(bvm *vm, void *fp, bclass *c)
{
bstring **vars;
int i, count = be_map_count(c->members);
int i, count = c->members ? be_map_count(c->members) : 0;
int nvar = c->nvar - be_class_closure_count(c);
save_string(fp, c->name);
save_long(fp, nvar); /* member variables count */
save_long(fp, count - nvar); /* method count */
vars = save_members(vm, fp, c, nvar);
if (vars != NULL) {
for (i = 0; i < nvar; ++i) {
save_string(fp, vars[i]);
if (count > 0) {
vars = save_members(vm, fp, c, nvar);
if (vars != NULL) {
for (i = 0; i < nvar; ++i) {
save_string(fp, vars[i]);
}
be_free(vm, vars, sizeof(bstring *) * nvar);
}
be_free(vm, vars, sizeof(bstring *) * nvar);
}
}