Properly inherit the environment on darwin where environ is not available for shared...
authorBenjamin Kramer <benny.kra@googlemail.com>
Sun, 18 Apr 2010 09:16:04 +0000 (09:16 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sun, 18 Apr 2010 09:16:04 +0000 (09:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101710 91177308-0d34-0410-b5e6-96231b3b80d8

lib/System/Unix/Program.inc

index 7fdf3872dd9bfc94f5b31e9a79dc1a91582c0a86..b7b4e9eb469431c54c2d9f27ee2a8c5398d3b0d3 100644 (file)
@@ -34,6 +34,8 @@
 #include <spawn.h>
 #if !defined(__APPLE__)
   extern char **environ;
+#else
+#include <crt_externs.h> // _NSGetEnviron
 #endif
 #endif
 
@@ -202,8 +204,11 @@ Program::Execute(const Path &path, const char **args, const char **envp,
       }
     }
 
+    if (!envp)
 #if !defined(__APPLE__)
-    if (!envp) envp = (const char**)environ;
+      envp = (const char**)environ;
+#else
+      envp = (const char**)*_NSGetEnviron(); // environ is missing in dylibs.
 #endif
 
     pid_t PID;