Properly write non-ASCII file names on Windows for file creation #1059
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.
Previously, using
Data.write(to:)
(orFileManager.createFile(atPath:)
which calls to that function) with a path that contained non-ASCII characters would crash. This crash was caused by an incorrect buffer length calculation that usedString.count
instead of the actual length of the buffer (which will differ for non-ASCII paths). Fixing the crash however revealed incorrect behavior where file creation would fail due to providing a UTF-8 file name to_sopen_s
. Instead, we need to transcode the file name to UTF-16 and open the file with_wsopen_s
to ensure that non-ASCII file names can be opened. The added unit test previously crashed (and then failed when the crash was resolved) but now successfully creates the file.Resolves #1058