@@ -13142,7 +13142,7 @@ ibf_dump_catch_table(struct ibf_dump *dump, const rb_iseq_t *iseq)
1314213142}
1314313143
1314413144static struct iseq_catch_table *
13145- ibf_load_catch_table (const struct ibf_load * load , ibf_offset_t catch_table_offset , unsigned int size )
13145+ ibf_load_catch_table (const struct ibf_load * load , ibf_offset_t catch_table_offset , unsigned int size , const rb_iseq_t * parent_iseq )
1314613146{
1314713147 if (size ) {
1314813148 struct iseq_catch_table * table = ruby_xmalloc (iseq_catch_table_bytes (size ));
@@ -13159,7 +13159,8 @@ ibf_load_catch_table(const struct ibf_load *load, ibf_offset_t catch_table_offse
1315913159 table -> entries [i ].cont = (unsigned int )ibf_load_small_value (load , & reading_pos );
1316013160 table -> entries [i ].sp = (unsigned int )ibf_load_small_value (load , & reading_pos );
1316113161
13162- table -> entries [i ].iseq = ibf_load_iseq (load , (const rb_iseq_t * )(VALUE )iseq_index );
13162+ rb_iseq_t * catch_iseq = (rb_iseq_t * )ibf_load_iseq (load , (const rb_iseq_t * )(VALUE )iseq_index );
13163+ RB_OBJ_WRITE (parent_iseq , & table -> entries [i ].iseq , catch_iseq );
1316313164 }
1316413165 return table ;
1316513166 }
@@ -13664,7 +13665,7 @@ ibf_load_iseq_each(struct ibf_load *load, rb_iseq_t *iseq, ibf_offset_t offset)
1366413665 load_body -> insns_info .body = ibf_load_insns_info_body (load , insns_info_body_offset , insns_info_size );
1366513666 load_body -> insns_info .positions = ibf_load_insns_info_positions (load , insns_info_positions_offset , insns_info_size );
1366613667 load_body -> local_table = ibf_load_local_table (load , local_table_offset , local_table_size );
13667- load_body -> catch_table = ibf_load_catch_table (load , catch_table_offset , catch_table_size );
13668+ load_body -> catch_table = ibf_load_catch_table (load , catch_table_offset , catch_table_size , iseq );
1366813669 const rb_iseq_t * parent_iseq = ibf_load_iseq (load , (const rb_iseq_t * )(VALUE )parent_iseq_index );
1366913670 const rb_iseq_t * local_iseq = ibf_load_iseq (load , (const rb_iseq_t * )(VALUE )local_iseq_index );
1367013671 const rb_iseq_t * mandatory_only_iseq = ibf_load_iseq (load , (const rb_iseq_t * )(VALUE )mandatory_only_iseq_index );
0 commit comments