[ASDisplayNode] Fix a crash in insertSubnode #2122
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If a node is already a subnode to a supernode, Inserting it again can lead to a crash.
Here is a simple repro of the crash:
The issue is that all the checks around subnode array boundaries are done BEFORE
subnode
is removed from itssupernode
. If it happens that thesupernode
is self, then removing thesubnode
causes all our index checks to no longer be valid.Here is the relevant code:
The fix is to add another case to exiting early because our
subnodeIndex
is out of bounds of_subnodes
. After this check:I've added a new check/early return