Clean up existing data in move assignment operator #1342
Closed
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.
I need some advice on this one from someone with stronger modern C++ knowledge than me.
While trying to find the source of the memory leak in issue #1240, I noticed that the move assignment operator on variant types is not cleaning up any pre-existing data, for example, in
Array
, there was:If
opaque
already contained a valid array, this seems like it would swap it for the data inother.opaque
, without ever cleaning up the pre-existing data inopaque
.Does this make sense? Or, am I just misunderstanding these new fangled rvalue references and move operations?
Marking as a draft because I don't know if this makes sense
(PS: This is NOT the source of the memory leak in #1240 as my PR doesn't fix it.)