Fix rb_shape_transition_object_id transition to TOO_COMPLEX

If `get_next_shape_internal` fail to return a shape, we must
transitiont to a complex shape. `shape_transition_object_id`
mistakenly didn't.

Co-Authored-By: Peter Zhu <peter@peterzhu.ca>
This commit is contained in:
Jean Boussier 2025-08-01 11:22:11 +02:00
parent 547f111b5b
commit 1064c63643
3 changed files with 9 additions and 2 deletions

View file

@ -716,6 +716,7 @@ shape_transition_object_id(shape_id_t original_shape_id)
rb_shape_t *shape = get_next_shape_internal(RSHAPE(original_shape_id), id_object_id, SHAPE_OBJ_ID, &dont_care, true);
if (!shape) {
shape = RSHAPE(ROOT_SHAPE_WITH_OBJ_ID);
return transition_complex(shape_id(shape, original_shape_id) | SHAPE_ID_FL_HAS_OBJECT_ID);
}
RUBY_ASSERT(shape);