From 56090c7ae363bb22ceefabb9f37d7526cb70dbbd Mon Sep 17 00:00:00 2001 From: AZero13 Date: Sat, 20 Dec 2025 00:42:29 -0500 Subject: [PATCH] Open then fstat, not stat then open --- .../FileManager/FileOperations.swift | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Sources/FoundationEssentials/FileManager/FileOperations.swift b/Sources/FoundationEssentials/FileManager/FileOperations.swift index 1c28880ac..0770b6ead 100644 --- a/Sources/FoundationEssentials/FileManager/FileOperations.swift +++ b/Sources/FoundationEssentials/FileManager/FileOperations.swift @@ -874,18 +874,18 @@ enum _FileOperations { #else #if !canImport(Darwin) private static func _copyRegularFile(_ srcPtr: UnsafePointer, _ dstPtr: UnsafePointer, delegate: some LinkOrCopyDelegate) throws { - var fileInfo = stat() - guard stat(srcPtr, &fileInfo) >= 0 else { - try delegate.throwIfNecessary(errno, String(cString: srcPtr), String(cString: dstPtr)) - return - } - let srcfd = open(srcPtr, O_RDONLY) guard srcfd >= 0 else { try delegate.throwIfNecessary(errno, String(cString: srcPtr), String(cString: dstPtr)) return } defer { close(srcfd) } + + var fileInfo = stat() + guard fstat(srcfd, &fileInfo) >= 0 else { + try delegate.throwIfNecessary(errno, String(cString: srcPtr), String(cString: dstPtr)) + return + } let dstfd = open(dstPtr, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC, 0o666) guard dstfd >= 0 else {