Bridge non-ASCII SmallStrings as native Swift Strings rather than by creating CFStrings. This gets consistent behavior with non-smol Strings when the String contains a BOM #25957
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.
5.1 version of #25866
(cherry picked from commit 27359bd)
Fixes rdar://problem/52565005
Explanation: CFString removes UTF8 byte order marks on creation, which we do when bridging SmallStrings. This means that bridging SmallStrings will unexpectedly reduce the length of the resulting NSString, resulting in out of index crashes and so on.
Scope: Swift Standard Library
Issue: rdar://problem/52565005
Risk: Low. This is a change of behavior, but it's restoring 4.2 behavior; additionally it only comes into effect in edge cases, since byte order marks are discouraged in UTF8 content.
Testing: Regular tests + new automated tests specifically for this issue
Reviewer: @milseman