Chromium Code Reviews| Index: runtime/bin/process_android.cc |
| diff --git a/runtime/bin/process_android.cc b/runtime/bin/process_android.cc |
| index 6f2394dd14ffecc7df57bb607c2c80d3aaa5ffc6..a85a4503008d56bc8895740a385aa63db4af0955 100644 |
| --- a/runtime/bin/process_android.cc |
| +++ b/runtime/bin/process_android.cc |
| @@ -25,10 +25,8 @@ |
| #include "platform/signal_blocker.h" |
| #include "platform/utils.h" |
| - |
| extern char **environ; |
| - |
| namespace dart { |
| namespace bin { |
| @@ -54,6 +52,8 @@ class ProcessInfo { |
| pid_t pid_; |
| intptr_t fd_; |
| ProcessInfo* next_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ProcessInfo); |
| }; |
| @@ -108,6 +108,9 @@ class ProcessInfoList { |
| // Mutex protecting all accesses to the linked list of active |
| // processes. |
| static Mutex* mutex_; |
| + |
| + DISALLOW_ALLOCATION(); |
| + DISALLOW_IMPLICIT_CONSTRUCTORS(ProcessInfoList); |
| }; |
| @@ -175,7 +178,7 @@ class ExitCodeHandler { |
| while (true) { |
| { |
| MonitorLocker locker(monitor_); |
| - while (running_ && process_count_ == 0) { |
| + while (running_ && (process_count_ == 0)) { |
| monitor_->Wait(Monitor::kNoTimeout); |
| } |
| if (!running_) { |
| @@ -204,9 +207,9 @@ class ExitCodeHandler { |
| // pipe has been closed. It is therefore not a problem that |
| // write fails with a broken pipe error. Other errors should |
| // not happen. |
| - if (result != -1 && result != sizeof(message)) { |
| + if ((result != -1) && (result != sizeof(message))) { |
| FATAL("Failed to write entire process exit message"); |
| - } else if (result == -1 && errno != EPIPE) { |
| + } else if ((result == -1) && (errno != EPIPE)) { |
| FATAL1("Failed to write exit code: %d", errno); |
| } |
| ProcessInfoList::RemoveProcess(pid); |
| @@ -223,6 +226,9 @@ class ExitCodeHandler { |
| static int process_count_; |
| static bool running_; |
| static Monitor* monitor_; |
| + |
| + DISALLOW_ALLOCATION(); |
| + DISALLOW_IMPLICIT_CONSTRUCTORS(ExitCodeHandler); |
| }; |
| @@ -265,7 +271,8 @@ class ProcessStarter { |
| exec_control_[0] = -1; |
| exec_control_[1] = -1; |
| - program_arguments_ = new char*[arguments_length + 2]; |
| + program_arguments_ = reinterpret_cast<char**>(Dart_ScopeAllocate( |
|
zra
2016/03/15 18:12:29
Made this scope allocated.
|
| + (arguments_length + 2) * sizeof(*program_arguments_))); |
| program_arguments_[0] = const_cast<char*>(path_); |
| for (int i = 0; i < arguments_length; i++) { |
| program_arguments_[i + 1] = arguments[i]; |
| @@ -274,7 +281,8 @@ class ProcessStarter { |
| program_environment_ = NULL; |
| if (environment != NULL) { |
| - program_environment_ = new char*[environment_length + 1]; |
| + program_environment_ = reinterpret_cast<char**>(Dart_ScopeAllocate( |
|
zra
2016/03/15 18:12:29
ditto.
|
| + (environment_length + 1) * sizeof(*program_environment_))); |
| for (int i = 0; i < environment_length; i++) { |
| program_environment_[i] = environment[i]; |
| } |
| @@ -283,16 +291,12 @@ class ProcessStarter { |
| } |
| - ~ProcessStarter() { |
| - delete[] program_arguments_; |
| - delete[] program_environment_; |
| - } |
| - |
| - |
| int Start() { |
| // Create pipes required. |
| int err = CreatePipes(); |
| - if (err != 0) return err; |
| + if (err != 0) { |
| + return err; |
| + } |
| // Fork to create the new process. |
| pid_t pid = TEMP_FAILURE_RETRY(fork()); |
| @@ -312,7 +316,9 @@ class ProcessStarter { |
| // Register the child process if not detached. |
| if (mode_ == kNormal) { |
| err = RegisterProcess(pid); |
| - if (err != 0) return err; |
| + if (err != 0) { |
| + return err; |
| + } |
| } |
| // Notify child process to start. This is done to delay the call to exec |
| @@ -491,8 +497,8 @@ class ProcessStarter { |
| SetupDetachedWithStdio(); |
| } |
| - if (working_directory_ != NULL && |
| - TEMP_FAILURE_RETRY(chdir(working_directory_)) == -1) { |
| + if ((working_directory_ != NULL) && |
| + (TEMP_FAILURE_RETRY(chdir(working_directory_)) == -1)) { |
| ReportChildError(); |
| } |
| @@ -534,9 +540,8 @@ class ProcessStarter { |
| // Read exec result from child. If no data is returned the exec was |
| // successful and the exec call closed the pipe. Otherwise the errno |
| // is written to the pipe. |
| - bytes_read = |
| - FDUtils::ReadFromBlocking( |
| - exec_control_[0], &child_errno, sizeof(child_errno)); |
| + bytes_read = FDUtils::ReadFromBlocking( |
| + exec_control_[0], &child_errno, sizeof(child_errno)); |
| if (bytes_read == sizeof(child_errno)) { |
| ReadChildError(); |
| return child_errno; |
| @@ -555,8 +560,7 @@ class ProcessStarter { |
| // is written to the pipe as well. |
| int result[2]; |
| bytes_read = |
| - FDUtils::ReadFromBlocking( |
| - exec_control_[0], result, sizeof(result)); |
| + FDUtils::ReadFromBlocking(exec_control_[0], result, sizeof(result)); |
| if (bytes_read == sizeof(int)) { |
| *pid = result[0]; |
| } else if (bytes_read == 2 * sizeof(int)) { |
| @@ -576,7 +580,9 @@ class ProcessStarter { |
| // Close all open file descriptors except for exec_control_[1]. |
| int max_fds = sysconf(_SC_OPEN_MAX); |
| - if (max_fds == -1) max_fds = _POSIX_OPEN_MAX; |
| + if (max_fds == -1) { |
| + max_fds = _POSIX_OPEN_MAX; |
| + } |
| for (int fd = 0; fd < max_fds; fd++) { |
| if (fd != exec_control_[1]) { |
| VOID_TEMP_FAILURE_RETRY(close(fd)); |
| @@ -605,12 +611,14 @@ class ProcessStarter { |
| // exec_control_[1], write_out_[0], read_in_[1] and |
| // read_err_[1]. |
| int max_fds = sysconf(_SC_OPEN_MAX); |
| - if (max_fds == -1) max_fds = _POSIX_OPEN_MAX; |
| + if (max_fds == -1) { |
| + max_fds = _POSIX_OPEN_MAX; |
| + } |
| for (int fd = 0; fd < max_fds; fd++) { |
| - if (fd != exec_control_[1] && |
| - fd != write_out_[0] && |
| - fd != read_in_[1] && |
| - fd != read_err_[1]) { |
| + if ((fd != exec_control_[1]) && |
| + (fd != write_out_[0]) && |
| + (fd != read_in_[1]) && |
| + (fd != read_err_[1])) { |
| VOID_TEMP_FAILURE_RETRY(close(fd)); |
| } |
| } |
| @@ -731,6 +739,9 @@ class ProcessStarter { |
| intptr_t* id_; |
| intptr_t* exit_event_; |
| char** os_error_message_; |
| + |
| + DISALLOW_ALLOCATION(); |
| + DISALLOW_IMPLICIT_CONSTRUCTORS(ProcessStarter); |
| }; |
| @@ -766,10 +777,14 @@ int Process::Start(const char* path, |
| class BufferList: public BufferListBase { |
| public: |
| + BufferList() {} |
| + |
| bool Read(int fd, intptr_t available) { |
| // Read all available bytes. |
| while (available > 0) { |
| - if (free_size_ == 0) Allocate(); |
| + if (free_size_ == 0) { |
| + Allocate(); |
| + } |
| ASSERT(free_size_ > 0); |
| ASSERT(free_size_ <= kBufferSize); |
| intptr_t block_size = dart::Utils::Minimum(free_size_, available); |
| @@ -777,13 +792,18 @@ class BufferList: public BufferListBase { |
| fd, |
| reinterpret_cast<void*>(FreeSpaceAddress()), |
| block_size)); |
| - if (bytes < 0) return false; |
| + if (bytes < 0) { |
| + return false; |
| + } |
| data_size_ += bytes; |
| free_size_ -= bytes; |
| available -= bytes; |
| } |
| return true; |
| } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(BufferList); |
| }; |
| @@ -835,7 +855,7 @@ bool Process::Wait(intptr_t pid, |
| // Process incoming data. |
| int current_alive = alive; |
| for (int i = 0; i < current_alive; i++) { |
| - if (fds[i].revents & POLLIN) { |
| + if ((fds[i].revents & POLLIN) != 0) { |
| intptr_t avail = FDUtils::AvailableBytes(fds[i].fd); |
| if (fds[i].fd == out) { |
| if (!out_data.Read(out, avail)) { |
| @@ -857,7 +877,7 @@ bool Process::Wait(intptr_t pid, |
| UNREACHABLE(); |
| } |
| } |
| - if (fds[i].revents & POLLHUP) { |
| + if ((fds[i].revents & POLLHUP) != 0) { |
| VOID_TEMP_FAILURE_RETRY(close(fds[i].fd)); |
| alive--; |
| if (i < alive) { |
| @@ -874,7 +894,9 @@ bool Process::Wait(intptr_t pid, |
| // Calculate the exit code. |
| intptr_t exit_code = exit_code_data.ints[0]; |
| intptr_t negative = exit_code_data.ints[1]; |
| - if (negative) exit_code = -exit_code; |
| + if (negative) { |
| + exit_code = -exit_code; |
| + } |
| result->set_exit_code(exit_code); |
| return true; |
| @@ -936,7 +958,9 @@ intptr_t Process::SetSignalHandler(intptr_t signal) { |
| break; |
| } |
| } |
| - if (!found) return -1; |
| + if (!found) { |
| + return -1; |
| + } |
| int fds[2]; |
| if (NO_RETRY_EXPECTED(pipe2(fds, O_CLOEXEC)) != 0) { |
| return -1; |
| @@ -986,7 +1010,9 @@ void Process::ClearSignalHandler(intptr_t signal) { |
| bool remove = false; |
| if (handler->signal() == signal) { |
| if (handler->port() == Dart_GetMainPortId()) { |
| - if (signal_handlers == handler) signal_handlers = handler->next(); |
| + if (signal_handlers == handler) { |
| + signal_handlers = handler->next(); |
| + } |
| handler->Unlink(); |
| remove = true; |
| } else { |
| @@ -994,7 +1020,9 @@ void Process::ClearSignalHandler(intptr_t signal) { |
| } |
| } |
| SignalInfo* next = handler->next(); |
| - if (remove) delete handler; |
| + if (remove) { |
| + delete handler; |
| + } |
| handler = next; |
| } |
| if (unlisten) { |