Skip to content

Commit e6cc158

Browse files
authored
Fix queue usage for Process.popen error case (#370)
We were not using the specified queue when calling the completion handler in an error case which can lead to unexpected results.
1 parent e915be3 commit e6cc158

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

Sources/TSCBasic/Process.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -955,18 +955,22 @@ extension Process {
955955
queue: DispatchQueue? = nil,
956956
completion: @escaping (Result<ProcessResult, Swift.Error>) -> Void
957957
) {
958+
let completionQueue = queue ?? Self.sharedCompletionQueue
959+
958960
do {
959961
let process = Process(
960962
arguments: arguments,
961963
environment: environment,
962964
outputRedirection: .collect,
963965
loggingHandler: loggingHandler
964966
)
965-
process.completionQueue = queue ?? Self.sharedCompletionQueue
967+
process.completionQueue = completionQueue
966968
try process.launch()
967969
process.waitUntilExit(completion)
968970
} catch {
969-
completion(.failure(error))
971+
completionQueue.async {
972+
completion(.failure(error))
973+
}
970974
}
971975
}
972976

0 commit comments

Comments
 (0)