diff options
| author | 2021-04-29 21:09:27 +0000 | |
|---|---|---|
| committer | 2021-04-29 21:09:27 +0000 | |
| commit | 43ce684e3ba667697612f9bd894504e5cfaa2180 (patch) | |
| tree | 68fb632025472190319e3e54e0861540908c1bdc | |
| parent | 611a55f03da70968c65de54e61fb9ac176df7f31 (diff) | |
| parent | b16d968e541c16c64d73ef8b1231a60b318884a0 (diff) | |
Merge "Fix two problems in the ExecuteBinary function." am: e0561210b2 am: b16d968e54
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1677048
Change-Id: Ia06cfe69ef224be2cbe3abf32df3f83622481861
| -rw-r--r-- | libs/androidfw/PosixUtils.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/androidfw/PosixUtils.cpp b/libs/androidfw/PosixUtils.cpp index f1ab1493012a..4ec525a01da5 100644 --- a/libs/androidfw/PosixUtils.cpp +++ b/libs/androidfw/PosixUtils.cpp @@ -72,7 +72,8 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv) argv0[i] = argv[i].c_str(); } argv0[argv.size()] = nullptr; - switch (fork()) { + int pid = fork(); + switch (pid) { case -1: // error free(argv0); PLOG(ERROR) << "fork"; @@ -104,8 +105,10 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv) close(stdout[1]); close(stderr[1]); int status; - wait(&status); + waitpid(pid, &status, 0); if (!WIFEXITED(status)) { + close(stdout[0]); + close(stderr[0]); return nullptr; } std::unique_ptr<ProcResult> result(new ProcResult()); |