Fix ZPipeline.encodeCharsWith flushing to prevent memory leaks
#9938
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.
Addresses #9935.
Ok, the more I think about this, one thing seems clear.
If
CharsetEncoder.encodeis called with theendOfInputargument as true, no further characters are expected to be provided. At this point looping within the localendOfInputmethod shouldn't happen at all.This change seems to fix the memory leak.
What I don't understand is how exactly under the current implementation do subsequent recurse calls of
endOfInputseem to end up withoverflowas result. This doesn't seem too obvious but my assumption is that the encoder itself keeps some internal state that is interpreted as overflow.