]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/windows/process.cpp
Close duplicated handles after starting a new process
[libs/core.git] / source / core / windows / process.cpp
index d6d1484f7d3ec05079310d2412df2f2c37c7ac0c..2f7b50547a4e8ff8ef493f58bcbdd90692379933 100644 (file)
@@ -80,9 +80,15 @@ void Process::execute(const string &command, bool path_search, const Arguments &
        }
        const char *cmdptr = (path_search ? 0 : command.c_str());
        const char *wd = (work_dir.empty() ? 0 : work_dir.c_str());
-       if(!CreateProcess(cmdptr, const_cast<char *>(cmdline.c_str()), 0, 0, false, 0, 0, wd, &startup, &priv->info))
+       if(!CreateProcess(cmdptr, const_cast<char *>(cmdline.c_str()), 0, 0, true, 0, 0, wd, &startup, &priv->info))
                throw system_error("CreateProcess");
-       // XXX Should we close the duplicated handles?  What if CreateProcess fails?
+
+       if(redirect)
+       {
+               CloseHandle(startup.hStdInput);
+               CloseHandle(startup.hStdOutput);
+               CloseHandle(startup.hStdError);
+       }
 
        running = true;