Fix #20919: clear ungetc buffer on IO#seek with encoding #12714
+19
−2
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.
Changes:
IO#seek
is called, it clearscbuf
(theungetc
buffer, not only therbuf
(the read buffer`When we call
IO#ungetc
on a file that not requires encoding, the char is returned to the read buggerrbuf
. But when encoding is set on the file, we have a separate bugger for characters that were sent viaungetc
. This buffer has not been cleared inmaster
, and as a result, we had issues with a combinaiton of#seek
#ungetc
and encoding.I still have a failing cygwin build, It's a bit cryptic to me as I don't have too much of experience with the Ruby build process, I'd appreciate some hints how to fix it.Fixes issue https://bugs.ruby-lang.org/issues/20919