From bd25e641f2819f6d353f712f3831eec767f37be6 Mon Sep 17 00:00:00 2001 From: Anders Johnsen Date: Wed, 10 Jun 2015 11:13:29 +0200 Subject: [PATCH] Revert execvpe on Mac and fix usage of strerror_r. BUG= R=sgjesse@google.com Review URL: https://codereview.chromium.org//1174903002. --- runtime/bin/process_macos.cc | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/runtime/bin/process_macos.cc b/runtime/bin/process_macos.cc index f97737690bf6..de7f149cb8f3 100644 --- a/runtime/bin/process_macos.cc +++ b/runtime/bin/process_macos.cc @@ -25,6 +25,9 @@ #include "platform/signal_blocker.h" +extern char** environ; + + namespace dart { namespace bin { @@ -449,14 +452,12 @@ class ProcessStarter { } if (program_environment_ != NULL) { - VOID_TEMP_FAILURE_RETRY( - execvpe(path_, const_cast(program_arguments_), - program_environment_)); - } else { - VOID_TEMP_FAILURE_RETRY( - execvp(path_, const_cast(program_arguments_))); + environ = program_environment_; } + VOID_TEMP_FAILURE_RETRY( + execvp(path_, const_cast(program_arguments_))); + ReportChildError(); } @@ -682,14 +683,8 @@ class ProcessStarter { void SetOSErrorMessage(int child_errno) { const int kMaxMessageSize = 256; char* message = static_cast(calloc(kMaxMessageSize, 0)); - char* os_error_message = strerror_r( - child_errno, message, kMaxMessageSize - 1); - if (message == os_error_message) { - *os_error_message_ = message; - } else { - free(message); - *os_error_message_ = strdup(os_error_message); - } + strerror_r(child_errno, message, kMaxMessageSize - 1); + *os_error_message_ = message; }