Chromium Code Reviews| Index: core/fpdfapi/parser/cpdf_parser_unittest.cpp |
| diff --git a/core/fpdfapi/parser/cpdf_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_parser_unittest.cpp |
| index 7148c54f30d55649cad324ff4a382df7b0a826e4..b78dffd095b892f2854b1dd168f3ee8426f22afc 100644 |
| --- a/core/fpdfapi/parser/cpdf_parser_unittest.cpp |
| +++ b/core/fpdfapi/parser/cpdf_parser_unittest.cpp |
| @@ -16,25 +16,30 @@ |
| class CFX_TestBufferRead : public IFX_SeekableReadStream { |
| public: |
| CFX_TestBufferRead(const unsigned char* buffer_in, size_t buf_size) |
| - : buffer_(buffer_in), total_size_(buf_size) {} |
| + : buffer_(buffer_in), total_size_(buf_size), current_pos_(0) {} |
| // IFX_Stream |
| void Release() override { delete this; } |
| - // IFX_SeekableReadStream |
| - bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { |
| - if (offset < 0 || offset + size > total_size_) |
| - return false; |
| + // IFX_FileRead |
|
Tom Sepez
2016/11/14 20:27:40
nit: I renamed IFX_FileRead to IFX_SeekableReadStr
|
| + bool IsEOF() override { return current_pos_ >= total_size_; } |
| + size_t ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { |
| + if (offset < 0 || |
| + offset + pdfium::base::checked_cast<FX_FILESIZE>(size) > total_size_) { |
|
Tom Sepez
2016/11/14 20:27:40
note: this addition can overflow, but its only a t
|
| + return 0; |
| + } |
| memcpy(buffer, buffer_ + offset, size); |
| - return true; |
| + current_pos_ = offset + pdfium::base::checked_cast<FX_FILESIZE>(size); |
| + return size; |
| } |
| - FX_FILESIZE GetSize() override { return (FX_FILESIZE)total_size_; }; |
| + FX_FILESIZE GetSize() override { return total_size_; }; |
| protected: |
| const unsigned char* buffer_; |
| - size_t total_size_; |
| + FX_FILESIZE total_size_; |
| + FX_FILESIZE current_pos_; |
| }; |
| // A wrapper class to help test member functions of CPDF_Parser. |