summaryrefslogtreecommitdiff
path: root/shape.c
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2025-08-01 11:22:11 +0200
committerJean Boussier <jean.boussier@gmail.com>2025-08-01 12:39:14 +0200
commit1064c63643f1d70ef7253acc1022fdbf4e903b70 (patch)
treea7fd40873df4b6ac0570097c01f07136daf030f8 /shape.c
parent547f111b5b0d773af2a4268fe407fdacc7060109 (diff)
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>
Diffstat (limited to 'shape.c')
-rw-r--r--shape.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/shape.c b/shape.c
index e296ab2d8f..6e1b49352f 100644
--- a/shape.c
+++ b/shape.c
@@ -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);