Undo BufferedIO#rbuf_consume_all_shareable! optimization #19
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 optimization is unsafe because
dest
is allowed to be a custom object responding to<<
(e.g. a block wrapped inReadAdapter
).So the receiver can hold onto the passed buffer for as long as it wants.
If it was guaranteed that
ReadAdapter
was the only possible receiver we could dup the buffer there for mutation safety, but I'm not certain it's the case so I'd rather err on the safe side.Fix: #14
Ref: shrinerb/shrine#610
cc @ko1