Return NULL to indicate the next shape isn't found
During compaction we must fix up shapes on objects who were extended but then became embedded. `rb_shape_traverse_from_new_root` is supposed to walk shape trees looking for a matching shape. When a shape has a "single child" we weren't returning NULL when the edge names didn't match. In the case of a single outgoing edge, this patch returns NULL when the child edge name doesn't match (similar to the case when a shape has a hash of outgoing edges)
This commit is contained in:
parent
b09f5c7bf7
commit
3016f30c95
Notes:
git
2023-04-18 23:57:09 +00:00
3
shape.c
3
shape.c
@ -497,6 +497,9 @@ rb_shape_traverse_from_new_root(rb_shape_t *initial_shape, rb_shape_t *dest_shap
|
|||||||
if (child->edge_name == dest_shape->edge_name) {
|
if (child->edge_name == dest_shape->edge_name) {
|
||||||
return child;
|
return child;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (rb_id_table_lookup(next_shape->edges, dest_shape->edge_name, &lookup_result)) {
|
if (rb_id_table_lookup(next_shape->edges, dest_shape->edge_name, &lookup_result)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user