Fix crash when RGENGC_CHECK_MODE=2

Commit dba61f4 fixes a crash when GC'ing a iseq that failed to compile.
However, if we turn on RGENGC_CHECK_MODE then rb_iseq_memsize crashes
since it cannot handle an iseq without is_entries.
This commit is contained in:
Peter Zhu 2022-12-04 15:23:09 -05:00
parent e58c4f97fa
commit d90835aeb5

2
iseq.c
View File

@ -515,6 +515,7 @@ rb_iseq_memsize(const rb_iseq_t *iseq)
/* body->is_entries */
size += ISEQ_IS_SIZE(body) * sizeof(union iseq_inline_storage_entry);
if (ISEQ_BODY(iseq)->is_entries) {
/* IC entries constant segments */
for (unsigned int ic_idx = 0; ic_idx < body->ic_size; ic_idx++) {
IC ic = &ISEQ_IS_IC_ENTRY(body, ic_idx);
@ -525,6 +526,7 @@ rb_iseq_memsize(const rb_iseq_t *iseq)
}
size += sizeof(ID); // null terminator
}
}
/* body->call_data */
size += body->ci_size * sizeof(struct rb_call_data);