diff options
-rw-r--r-- | base/shared_memory_posix.cc | 6 | ||||
-rw-r--r-- | chrome/browser/renderer_host/async_resource_handler.cc | 16 |
2 files changed, 13 insertions, 9 deletions
diff --git a/base/shared_memory_posix.cc b/base/shared_memory_posix.cc index 6919cfc..34e7b72 100644 --- a/base/shared_memory_posix.cc +++ b/base/shared_memory_posix.cc @@ -203,10 +203,8 @@ bool SharedMemory::CreateOrOpen(const std::wstring &name, return false; const size_t current_size = stat.st_size; if (current_size != size) { - // TODO(hawk): When finished with bug 16371, revert this CHECK() to: - // if (ftruncate(fileno(fp), size) != 0) - // return false; - CHECK(!ftruncate(fileno(fp), size)); + if (ftruncate(fileno(fp), size) != 0) + return false; if (fseeko(fp, size, SEEK_SET) != 0) return false; } diff --git a/chrome/browser/renderer_host/async_resource_handler.cc b/chrome/browser/renderer_host/async_resource_handler.cc index e7fe56c..276e431 100644 --- a/chrome/browser/renderer_host/async_resource_handler.cc +++ b/chrome/browser/renderer_host/async_resource_handler.cc @@ -31,12 +31,17 @@ class SharedIOBuffer : public net::IOBuffer { explicit SharedIOBuffer(int buffer_size) : net::IOBuffer(), ok_(false), - buffer_size_(buffer_size) { - if (shared_memory_.Create(std::wstring(), false, false, buffer_size) && - shared_memory_.Map(buffer_size)) { - ok_ = true; + buffer_size_(buffer_size) {} + + bool Init() { + if (shared_memory_.Create(std::wstring(), false, false, buffer_size_) && + shared_memory_.Map(buffer_size_)) { data_ = reinterpret_cast<char*>(shared_memory_.memory()); + // TODO(hawk): Remove after debugging bug 16371. + CHECK(data_); + ok_ = true; } + return ok_; } base::SharedMemory* shared_memory() { return &shared_memory_; } @@ -111,8 +116,9 @@ bool AsyncResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf, *buf_size = read_buffer_->buffer_size(); } else { read_buffer_ = new SharedIOBuffer(next_buffer_size_); - if (!read_buffer_->ok()) { + if (!read_buffer_->Init()) { DLOG(ERROR) << "Couldn't allocate shared io buffer"; + read_buffer_ = NULL; return false; } // TODO(willchan): Remove after debugging bug 16371. |