Fix label deletion from an unordered map - [MOD-6710] #435
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.
Describe the changes in the pull request
As stated in the documentation of the unordered map, iterators to an unordered map should be invalidated after reserving memory.
The bug was that we used the iterator we got from
find()
at the start of the function for deleting the IDs from the index and lastly deleting the label from the map.Using the iterator returned from the previous lookup might be invalid as we might resize the index while deleting the IDs one by one.
The fix is to use a reference to the ids vector itself in the loop, and finally delete the label from the map using the label and not the iterator.
Mark if applicable