diff --git a/ebtree/eb32sctree.c b/ebtree/eb32sctree.c index c1b3535b8..96281cf84 100644 --- a/ebtree/eb32sctree.c +++ b/ebtree/eb32sctree.c @@ -370,12 +370,14 @@ void eb32sc_delete(struct eb32sc_node *eb32) /* From now on, and are necessarily different, and the * 's node part is in use. By definition, is at least - * below , so keeping its key for the bit string is OK. + * below , so keeping its key for the bit string is OK. However + * its scope must be enlarged to cover the new branch it absorbs. */ parent->node_p = node->node_p; parent->branches = node->branches; parent->bit = node->bit; + container_of(parent, struct eb32sc_node, node)->node_s |= eb32->node_s; /* We must now update the new node's parent... */ gpside = eb_gettag(parent->node_p);