Chromium Code Reviews| Index: native_client_sdk/src/libraries/nacl_io/httpfs/http_fs_node.cc |
| diff --git a/native_client_sdk/src/libraries/nacl_io/httpfs/http_fs_node.cc b/native_client_sdk/src/libraries/nacl_io/httpfs/http_fs_node.cc |
| index 653c646daa2544ed90325d44905bf60ba00bf1f7..de5b44d04050a018ffb2d46c381403577b5aa5ef 100644 |
| --- a/native_client_sdk/src/libraries/nacl_io/httpfs/http_fs_node.cc |
| +++ b/native_client_sdk/src/libraries/nacl_io/httpfs/http_fs_node.cc |
| @@ -228,6 +228,8 @@ HttpFsNode::HttpFsNode(Filesystem* filesystem, |
| bool cache_content) |
| : Node(filesystem), |
| url_(url), |
| + buffer_(NULL), |
| + buffer_len_(0), |
| cache_content_(cache_content), |
| has_cached_size_(false) { |
| } |
| @@ -557,12 +559,16 @@ Error HttpFsNode::ReadEntireResponseToTemp(const ScopedResource& loader, |
| *out_bytes = 0; |
| const int kBytesToRead = MAX_READ_BUFFER_SIZE; |
| - buffer_.resize(kBytesToRead); |
| + buffer_ = (char*)realloc(buffer_, kBytesToRead); |
| + assert(buffer_); |
| + if (!buffer_) |
| + return ENOMEM; |
| + buffer_len_ = kBytesToRead; |
|
binji
2014/08/07 17:52:52
should set buffer_len_ to 0 if !buffer_?
Sam Clegg
2014/08/08 09:26:37
Done.
|
| while (true) { |
| int bytes_read; |
| Error error = |
| - ReadResponseToBuffer(loader, buffer_.data(), kBytesToRead, &bytes_read); |
| + ReadResponseToBuffer(loader, buffer_, kBytesToRead, &bytes_read); |
| if (error) |
| return error; |
| @@ -604,16 +610,21 @@ Error HttpFsNode::ReadResponseToTemp(const ScopedResource& loader, |
| int* out_bytes) { |
| *out_bytes = 0; |
| - if (buffer_.size() < static_cast<size_t>(count)) |
| - buffer_.resize(std::min(count, MAX_READ_BUFFER_SIZE)); |
| + if (buffer_len_ < count) { |
| + int new_len = std::min(count, MAX_READ_BUFFER_SIZE); |
| + buffer_ = (char*)realloc(buffer_, new_len); |
| + assert(buffer_); |
| + if (!buffer_) |
| + return ENOMEM; |
| + buffer_len_ = new_len; |
|
binji
2014/08/07 17:52:52
same here?
Sam Clegg
2014/08/08 09:26:37
Done.
|
| + } |
| int bytes_left = count; |
| while (bytes_left > 0) { |
| - int bytes_to_read = |
| - std::min(static_cast<size_t>(bytes_left), buffer_.size()); |
| + int bytes_to_read = std::min(bytes_left, buffer_len_); |
| int bytes_read; |
| Error error = ReadResponseToBuffer( |
| - loader, buffer_.data(), bytes_to_read, &bytes_read); |
| + loader, buffer_, bytes_to_read, &bytes_read); |
| if (error) |
| return error; |