Fix Hash#reject!
for non-equality key
#10511
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.
Fixes the immediate issue reported in #3923. It does not decide the discussion on hashing of
NaN
values but ensures equal behaviour between#reject
and#reject!
(and by extension,#select
and#select!
).Currently, you get this behaviour because
#reject!
deletes by key which is based on quality of the key value:With this change the latter call also properly deletes the entry.
I would expect this change to also improve performance because it avoids a duplicate hash lookup on deletion, but I couldn't actually demonstrate that in a benchmark. Performance is actually stable.
Maybe I'm missing something.
But it fixes a bug and doesn't deteriorate performance, so it's fine to merge.