|
25 | 25 | #include "platform/signal_blocker.h" |
26 | 26 |
|
27 | 27 |
|
| 28 | +extern char** environ; |
| 29 | + |
| 30 | + |
28 | 31 | namespace dart { |
29 | 32 | namespace bin { |
30 | 33 |
|
@@ -449,14 +452,12 @@ class ProcessStarter { |
449 | 452 | } |
450 | 453 |
|
451 | 454 | if (program_environment_ != NULL) { |
452 | | - VOID_TEMP_FAILURE_RETRY( |
453 | | - execvpe(path_, const_cast<char* const*>(program_arguments_), |
454 | | - program_environment_)); |
455 | | - } else { |
456 | | - VOID_TEMP_FAILURE_RETRY( |
457 | | - execvp(path_, const_cast<char* const*>(program_arguments_))); |
| 455 | + environ = program_environment_; |
458 | 456 | } |
459 | 457 |
|
| 458 | + VOID_TEMP_FAILURE_RETRY( |
| 459 | + execvp(path_, const_cast<char* const*>(program_arguments_))); |
| 460 | + |
460 | 461 | ReportChildError(); |
461 | 462 | } |
462 | 463 |
|
@@ -682,14 +683,8 @@ class ProcessStarter { |
682 | 683 | void SetOSErrorMessage(int child_errno) { |
683 | 684 | const int kMaxMessageSize = 256; |
684 | 685 | char* message = static_cast<char*>(calloc(kMaxMessageSize, 0)); |
685 | | - char* os_error_message = strerror_r( |
686 | | - child_errno, message, kMaxMessageSize - 1); |
687 | | - if (message == os_error_message) { |
688 | | - *os_error_message_ = message; |
689 | | - } else { |
690 | | - free(message); |
691 | | - *os_error_message_ = strdup(os_error_message); |
692 | | - } |
| 686 | + strerror_r(child_errno, message, kMaxMessageSize - 1); |
| 687 | + *os_error_message_ = message; |
693 | 688 | } |
694 | 689 |
|
695 | 690 |
|
|
0 commit comments