Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
Resource Mgmt: RI17 Sp 52
-
3
Description
The sorter assumes inactive leaf nodes are placed in the tail in the children list of a node.
However, when collapsing a parent node with a single "." virtual child node, its position may fail to be updated due to a bug in `Sorter::remove()`:
CHECK(child->isLeaf()); .... current->kind = child->kind; ... if (current->kind == Node::INTERNAL) { }
This bug would manifest, if
(1) we have a/b and a/.
(2) deactivate(a), i.e. a/. becomes inactive_leaf
(3) remove(a/b)
When these happens, a/. will collapse to `a` as an inactive_leaf, due to the bug above, however, it will not be placed at the end, resulting in all the clients after `a` not included in the sort().
Luckily, this should never happen in practice, because only frameworks will get deactivated, and frameworks don’t have sub clients.