Merge "Fix two problems in the ExecuteBinary function."
This commit is contained in:
@@ -72,7 +72,8 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv)
|
|||||||
argv0[i] = argv[i].c_str();
|
argv0[i] = argv[i].c_str();
|
||||||
}
|
}
|
||||||
argv0[argv.size()] = nullptr;
|
argv0[argv.size()] = nullptr;
|
||||||
switch (fork()) {
|
int pid = fork();
|
||||||
|
switch (pid) {
|
||||||
case -1: // error
|
case -1: // error
|
||||||
free(argv0);
|
free(argv0);
|
||||||
PLOG(ERROR) << "fork";
|
PLOG(ERROR) << "fork";
|
||||||
@@ -104,8 +105,10 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv)
|
|||||||
close(stdout[1]);
|
close(stdout[1]);
|
||||||
close(stderr[1]);
|
close(stderr[1]);
|
||||||
int status;
|
int status;
|
||||||
wait(&status);
|
waitpid(pid, &status, 0);
|
||||||
if (!WIFEXITED(status)) {
|
if (!WIFEXITED(status)) {
|
||||||
|
close(stdout[0]);
|
||||||
|
close(stderr[0]);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
std::unique_ptr<ProcResult> result(new ProcResult());
|
std::unique_ptr<ProcResult> result(new ProcResult());
|
||||||
|
|||||||
Reference in New Issue
Block a user