From c1589f2837052ea456c7aadbaab226bd19adaedf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Barri=C3=A9?= Date: Tue, 10 Jun 2025 17:04:07 +0200 Subject: [PATCH] Fix RubyVM::Shape.transition_tree --- shape.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/shape.c b/shape.c index 668850cdd46dec..a7dff90ce3945b 100644 --- a/shape.c +++ b/shape.c @@ -1391,12 +1391,14 @@ static enum rb_id_table_iterator_result collect_keys_and_values(ID key, VALUE va static VALUE edges(VALUE edges) { VALUE hash = rb_hash_new(); - if (SINGLE_CHILD_P(edges)) { - rb_shape_t *child = SINGLE_CHILD(edges); - collect_keys_and_values(child->edge_name, (VALUE)child, &hash); - } - else { - rb_managed_id_table_foreach(edges, collect_keys_and_values, &hash); + if (edges) { + if (SINGLE_CHILD_P(edges)) { + rb_shape_t *child = SINGLE_CHILD(edges); + collect_keys_and_values(child->edge_name, (VALUE)child, &hash); + } + else { + rb_managed_id_table_foreach(edges, collect_keys_and_values, &hash); + } } return hash; }