Skip to content

Commit 664238c

Browse files
committed
Fix fd was not closed error on Windows
1 parent 6731fa8 commit 664238c

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

Sources/Subprocess/Platforms/Subprocess+Windows.swift

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -48,37 +48,32 @@ extension Configuration {
4848
outputPipe: consuming CreatedPipe,
4949
errorPipe: consuming CreatedPipe
5050
) throws -> SpawnResult {
51-
var inputPipeBox: CreatedPipe? = consume inputPipe
52-
var outputPipeBox: CreatedPipe? = consume outputPipe
53-
var errorPipeBox: CreatedPipe? = consume errorPipe
54-
55-
var _inputPipe = inputPipeBox.take()!
56-
var _outputPipe = outputPipeBox.take()!
57-
var _errorPipe = errorPipeBox.take()!
58-
59-
let inputReadFileDescriptor: TrackedFileDescriptor? = _inputPipe.readFileDescriptor()
60-
let inputWriteFileDescriptor: TrackedFileDescriptor? = _inputPipe.writeFileDescriptor()
61-
let outputReadFileDescriptor: TrackedFileDescriptor? = _outputPipe.readFileDescriptor()
62-
let outputWriteFileDescriptor: TrackedFileDescriptor? = _outputPipe.writeFileDescriptor()
63-
let errorReadFileDescriptor: TrackedFileDescriptor? = _errorPipe.readFileDescriptor()
64-
let errorWriteFileDescriptor: TrackedFileDescriptor? = _errorPipe.writeFileDescriptor()
65-
66-
let (
67-
applicationName,
68-
commandAndArgs,
69-
environment,
70-
intendedWorkingDir
71-
): (String?, String, String, String?)
51+
var inputReadFileDescriptor: TrackedFileDescriptor? = inputPipe.readFileDescriptor()
52+
var inputWriteFileDescriptor: TrackedFileDescriptor? = inputPipe.writeFileDescriptor()
53+
var outputReadFileDescriptor: TrackedFileDescriptor? = outputPipe.readFileDescriptor()
54+
var outputWriteFileDescriptor: TrackedFileDescriptor? = outputPipe.writeFileDescriptor()
55+
var errorReadFileDescriptor: TrackedFileDescriptor? = errorPipe.readFileDescriptor()
56+
var errorWriteFileDescriptor: TrackedFileDescriptor? = errorPipe.writeFileDescriptor()
57+
58+
let applicationName: String?
59+
let commandAndArgs: String
60+
let environment: String
61+
let intendedWorkingDir: String?
7262
do {
73-
(applicationName, commandAndArgs, environment, intendedWorkingDir) = try self.preSpawn()
63+
(
64+
applicationName,
65+
commandAndArgs,
66+
environment,
67+
intendedWorkingDir
68+
) = try self.preSpawn()
7469
} catch {
7570
try self.safelyCloseMultiple(
76-
inputRead: inputReadFileDescriptor,
77-
inputWrite: inputWriteFileDescriptor,
78-
outputRead: outputReadFileDescriptor,
79-
outputWrite: outputWriteFileDescriptor,
80-
errorRead: errorReadFileDescriptor,
81-
errorWrite: errorWriteFileDescriptor
71+
inputRead: inputReadFileDescriptor.take(),
72+
inputWrite: inputWriteFileDescriptor.take(),
73+
outputRead: outputReadFileDescriptor.take(),
74+
outputWrite: outputWriteFileDescriptor.take(),
75+
errorRead: errorReadFileDescriptor.take(),
76+
errorWrite: errorWriteFileDescriptor.take()
8277
)
8378
throw error
8479
}

0 commit comments

Comments
 (0)