summarylogtreecommitdiffstats
path: root/swiftpm-glibc.patch
blob: f3fa8c1815affeedc932bf13a450dcba17e26ec7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
diff --git a/Sources/Basic/Process.swift b/Sources/Basic/Process.swift
index 2e2efd448..f65702709 100644
--- a/Sources/Basic/Process.swift
+++ b/Sources/Basic/Process.swift
@@ -366,7 +366,10 @@ public final class Process: ObjectIdentifierProtocol {
         defer { posix_spawn_file_actions_destroy(&fileActions) }
 
         // Workaround for https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=89e435f3559c53084498e9baad22172b64429362
-        let devNull = strdup("/dev/null")
+        // Change allowing for newer version of glibc
+        guard let devNull = strdup("/dev/null") else {
+            throw SystemError.posix_spawn(0, arguments)
+        }
         defer { free(devNull) }
         // Open /dev/null as stdin.
         posix_spawn_file_actions_addopen(&fileActions, 0, devNull, O_RDONLY, 0)
@@ -392,7 +395,7 @@ public final class Process: ObjectIdentifierProtocol {
 
         let argv = CStringArray(arguments)
         let env = CStringArray(environment.map({ "\($0.0)=\($0.1)" }))
-        let rv = posix_spawnp(&processID, argv.cArray[0], &fileActions, &attributes, argv.cArray, env.cArray)
+        let rv = posix_spawnp(&processID, argv.cArray[0]!, &fileActions, &attributes, argv.cArray, env.cArray)
 
         guard rv == 0 else {
             throw SystemError.posix_spawn(rv, arguments)