Fix linux build. posix_spawn doesn't inherit the environment by default.
authorNick Lewycky <nicholas@mxc.ca>
Sun, 18 Apr 2010 06:22:26 +0000 (06:22 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Sun, 18 Apr 2010 06:22:26 +0000 (06:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101701 91177308-0d34-0410-b5e6-96231b3b80d8

lib/System/Unix/Program.inc

index 44e831ff2d3f0dc625eff1dba136c0acebefdcfd..476e90b38b22f351a3ab854e6dc1feba5818419a 100644 (file)
@@ -34,6 +34,8 @@
 #include <spawn.h>
 #endif
 
+extern char **environ;
+
 namespace llvm {
 using namespace sys;
 
@@ -126,7 +128,7 @@ static bool RedirectIO(const Path *Path, int FD, std::string* ErrMsg) {
 
 #ifdef HAVE_POSIX_SPAWN
 static bool RedirectIO_PS(const Path *Path, int FD, std::string *ErrMsg,
-                         posix_spawn_file_actions_t &FileActions) {
+                          posix_spawn_file_actions_t &FileActions) {
   if (Path == 0) // Noop
     return false;
   std::string File;
@@ -200,6 +202,7 @@ Program::Execute(const Path &path, const char **args, const char **envp,
     }
 
     pid_t PID;
+    if (!envp) envp = (const char**)environ;
     int Err = posix_spawn(&PID, path.c_str(), &FileActions,
                           /*attrp*/0, (char**)args, (char**)envp);