[RDF] Fix an iterator invalidation in RDF snapshots #20494
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.
This is a followup of the fix #20352 for issue #20320:
When snapshot with variations is run with JIT-ted filters, the
computation graph first needs to be JIT-ted before reading Defines
or Filters. In the fix for that case, an iterator invalidation on
push_back caused crashes, because vector.reserve() had been called
with the wrong size.
Here, the size is corrected, but more importantly, instead of saving the
iterator, the shared_ptr it points to is saved. This makes the code
independent of the underlying storage.
The problem was originally described here:
#20320 (comment)
The code posted there has been converted into a test, and added to this PR.