File tree Expand file tree Collapse file tree 1 file changed +12
-17
lines changed
Sources/SourceKitBazelBSP/SharedUtils/Shell Expand file tree Collapse file tree 1 file changed +12
-17
lines changed Original file line number Diff line number Diff line change @@ -52,38 +52,33 @@ public struct RunningProcess: Sendable {
5252 public func output< T: DataConvertible > ( ) throws -> T {
5353 var stdoutData : Data = Data ( )
5454 var stderrData : Data = Data ( )
55- let dataQueue = DispatchQueue ( label: " \( cmd) " )
55+ let stdoutDataQueue = DispatchQueue ( label: " Stdout: \( cmd) " )
56+ let stderrDataQueue = DispatchQueue ( label: " Stderr: \( cmd) " )
5657 let group = DispatchGroup ( )
5758
5859 group. enter ( )
5960 stdout. fileHandleForReading. readabilityHandler = { stdoutFileHandle in
6061 let tmpstdoutData = stdoutFileHandle. availableData
61- if !tmpstdoutData. isEmpty {
62- // Ensure we always wait for all reads
63- group. enter ( )
64- dataQueue. async {
65- stdoutData. append ( tmpstdoutData)
66- group. leave ( )
67- }
68- } else { // EOF
62+ if tmpstdoutData. isEmpty { // EOF
6963 stdout. fileHandleForReading. readabilityHandler = nil
7064 group. leave ( )
65+ } else {
66+ stdoutDataQueue. sync {
67+ stdoutData. append ( tmpstdoutData)
68+ }
7169 }
7270 }
7371
7472 group. enter ( )
7573 stderr. fileHandleForReading. readabilityHandler = { stderrFileHandle in
7674 let tmpstderrData = stderrFileHandle. availableData
77- if !tmpstderrData. isEmpty {
78- // Ensure we always wait for all reads
79- group. enter ( )
80- dataQueue. async {
81- stderrData. append ( tmpstderrData)
82- group. leave ( )
83- }
84- } else { // EOF
75+ if tmpstderrData. isEmpty { // EOF
8576 stderr. fileHandleForReading. readabilityHandler = nil
8677 group. leave ( )
78+ } else {
79+ stderrDataQueue. sync {
80+ stderrData. append ( tmpstderrData)
81+ }
8782 }
8883 }
8984
You can’t perform that action at this time.
0 commit comments