Add write barrier for hash in obj_traverse_i

We are inserting directly into the st_table, so we need to issue a write
barrier from the hash.
This commit is contained in:
John Hawthorn 2025-06-09 18:13:38 -07:00
parent f951ce37d6
commit bb0d6296ac
Notes: git 2025-06-18 17:08:57 +00:00

View file

@ -1188,6 +1188,7 @@ obj_traverse_i(VALUE obj, struct obj_traverse_data *data)
// already traversed
return 0;
}
RB_OBJ_WRITTEN(data->rec_hash, Qundef, obj);
struct obj_traverse_callback_data d = {
.stop = false,
@ -1644,6 +1645,8 @@ obj_traverse_replace_i(VALUE obj, struct obj_traverse_replace_data *data)
}
else {
st_insert(obj_traverse_replace_rec(data), (st_data_t)obj, replacement);
RB_OBJ_WRITTEN(data->rec_hash, Qundef, obj);
RB_OBJ_WRITTEN(data->rec_hash, Qundef, replacement);
}
if (!data->move) {