File tree Expand file tree Collapse file tree 2 files changed +7
-6
lines changed Expand file tree Collapse file tree 2 files changed +7
-6
lines changed Original file line number Diff line number Diff line change @@ -474,6 +474,8 @@ public final class Process {
474474 )
475475 var searchPaths : [ AbsolutePath ] = [ ]
476476#if os(Windows)
477+ // NOTE: `CreateProcess` the Windows system API always searchs System and Windows directories first.
478+ // See https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw#parameters
477479 var buffer = Array < WCHAR > ( repeating: 0 , count: Int ( MAX_PATH + 1 ) )
478480 // The 32-bit Windows system directory
479481 if GetSystemDirectoryW ( & buffer, . init( buffer. count) ) > 0 {
Original file line number Diff line number Diff line change @@ -225,9 +225,9 @@ public func lookupExecutablePath(
225225 return nil
226226 }
227227#if os(Windows)
228- let isPath = value. contains ( " : " ) || value. contains ( " \\ " ) || value. contains ( " / " )
228+ let isFileName = ! value. contains ( " : " ) && ! value. contains ( " \\ " ) && ! value. contains ( " / " )
229229#else
230- let isPath = value. contains ( " / " )
230+ let isFileName = ! value. contains ( " / " )
231231#endif
232232
233233 var paths : [ AbsolutePath ] = [ ]
@@ -241,12 +241,11 @@ public func lookupExecutablePath(
241241 paths. append ( absPath)
242242 }
243243
244- // Ensure the value is not a path.
245- if !isPath {
246- // Try to locate in search paths.
244+ if isFileName {
245+ // Try to locate file in search paths.
247246 paths. append ( contentsOf: searchPaths. map ( { $0. appending ( component: value) } ) )
248247#if os(Windows)
249- if !value. contains ( " . " ) {
248+ if !value. hasSuffix ( " . " ) {
250249 paths. append ( contentsOf: searchPaths. map ( { $0. appending ( component: value + executableFileSuffix) } ) )
251250 }
252251#endif
You can’t perform that action at this time.
0 commit comments