Merge "Fix two problems in the ExecuteBinary function." am: e0561210b2

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1677048

Change-Id: I778cc45627af85a3b7bc5a140540302772638c1d
This commit is contained in:
Peter Collingbourne
2021-04-29 20:46:46 +00:00
committed by Automerger Merge Worker

View File

@@ -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());