|
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