in base64 encoding escape newlines only when between quotes #491
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 is an attempt to fix FasterXML/jackson-dataformats-text#90 which seems to have been introduced when switching the default Base64Variant to MIME instead of MIME_NO_LINEFEEDS (to fix FasterXML/jackson-dataformats-text#62)
When the encoded string is longer than 76 characters, the encoding method adds escaped '\n', instead of "real" newlines, in order to be able to include it in a quoted string.
But in the case of yaml, the encoding is done without enclosing quotes, and "real" newlines should be used for the decoding to work (as the "\n" is are not unescaped).
With this change, the newlines are only escaped when the encoding is done between quotes.
I tested the change by building jackson-databind and jackson-dataformat-texts (I do not know which other modules could be impacted by this change).
The additional test for encoding long arrays in jackson-dataformat-texts proposed in FasterXML/jackson-dataformats-text#90 also works with this change.