Skip to content

Commit

Permalink
Fix divergent overwrite behavior of FileManager.copyItem(at:to:) on L…
Browse files Browse the repository at this point in the history
…inux and Windows (swiftlang#4821)

* Fix silent-overwrite behavior of FileManager.copyItem() on Linux

* Fix silent-overwrite behavior of FileManager.copyItem() on Windows
  • Loading branch information
gwynne authored Sep 16, 2023
1 parent 9f53cc5 commit 1319097
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Sources/Foundation/FileManager+POSIX.swift
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@ extension FileManager {
}
defer { close(srcfd) }

let dstfd = open(dstRep, O_WRONLY | O_CREAT | O_TRUNC, 0o666)
let dstfd = open(dstRep, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, 0o666)
guard dstfd >= 0 else {
throw _NSErrorWithErrno(errno, reading: false, path: dstPath,
extraUserInfo: extraErrorInfo(srcPath: srcPath, dstPath: dstPath, userVariant: variant))
Expand Down
2 changes: 1 addition & 1 deletion Sources/Foundation/FileManager+Win32.swift
Original file line number Diff line number Diff line change
Expand Up @@ -550,7 +550,7 @@ extension FileManager {
internal func _copyRegularFile(atPath srcPath: String, toPath dstPath: String, variant: String = "Copy") throws {
try withNTPathRepresentation(of: srcPath) { wszSource in
try withNTPathRepresentation(of: dstPath) { wszDestination in
if !CopyFileW(wszSource, wszDestination, false) {
if !CopyFileW(wszSource, wszDestination, true) {
throw _NSErrorWithWindowsError(GetLastError(), reading: true, paths: [srcPath, dstPath])
}
}
Expand Down

0 comments on commit 1319097

Please sign in to comment.