Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(579)

Unified Diff: runtime/bin/process_linux.cc

Issue 2596543002: Fix Process.runSync error handling. (Closed)
Patch Set: Address comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/bin/process_fuchsia.cc ('k') | runtime/bin/process_macos.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/process_linux.cc
diff --git a/runtime/bin/process_linux.cc b/runtime/bin/process_linux.cc
index 22dc683f16205fa335b82db550a14d1d2a8cecfc..c8a2f7b51abebbce9ad52c4226cae997575583d4 100644
--- a/runtime/bin/process_linux.cc
+++ b/runtime/bin/process_linux.cc
@@ -768,36 +768,6 @@ 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();
- }
- ASSERT(free_size_ > 0);
- ASSERT(free_size_ <= kBufferSize);
- intptr_t block_size = dart::Utils::Minimum(free_size_, available);
- intptr_t bytes = TEMP_FAILURE_RETRY(
- read(fd, reinterpret_cast<void*>(FreeSpaceAddress()), block_size));
- if (bytes < 0) {
- return false;
- }
- data_size_ += bytes;
- free_size_ -= bytes;
- available -= bytes;
- }
- return true;
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(BufferList);
-};
-
-
static bool CloseProcessBuffers(struct pollfd fds[3]) {
int e = errno;
VOID_TEMP_FAILURE_RETRY(close(fds[0].fd));
@@ -881,6 +851,8 @@ bool Process::Wait(intptr_t pid,
// All handles closed and all data read.
result->set_stdout_data(out_data.GetData());
result->set_stderr_data(err_data.GetData());
+ DEBUG_ASSERT(out_data.IsEmpty());
+ DEBUG_ASSERT(err_data.IsEmpty());
// Calculate the exit code.
intptr_t exit_code = exit_code_data.ints[0];
« no previous file with comments | « runtime/bin/process_fuchsia.cc ('k') | runtime/bin/process_macos.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698