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

Unified Diff: fpdfsdk/fpdf_dataavail.cpp

Issue 2430743003: in the attempt to fix 627393, changed IFX_FileRead's readBlock to return the length it reads
Patch Set: fix an undefined variable Created 4 years, 1 month 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
Index: fpdfsdk/fpdf_dataavail.cpp
diff --git a/fpdfsdk/fpdf_dataavail.cpp b/fpdfsdk/fpdf_dataavail.cpp
index a3accba7662a82fec9ddbd2ac09c32367a9e9ccc..573b225b3f881df25d986f6acb00865a471d9324 100644
--- a/fpdfsdk/fpdf_dataavail.cpp
+++ b/fpdfsdk/fpdf_dataavail.cpp
@@ -11,8 +11,10 @@
#include "core/fpdfapi/parser/cpdf_data_avail.h"
#include "core/fpdfapi/parser/cpdf_document.h"
+#include "core/fxcrt/fx_safe_types.h"
#include "fpdfsdk/fsdk_define.h"
#include "public/fpdf_formfill.h"
+#include "third_party/base/numerics/safe_conversions_impl.h"
#include "third_party/base/ptr_util.h"
// These checks are here because core/ and public/ cannot depend on each other.
@@ -59,23 +61,34 @@ class CFPDF_FileAvailWrap : public CPDF_DataAvail::FileAvail {
class CFPDF_FileAccessWrap : public IFX_SeekableReadStream {
public:
- CFPDF_FileAccessWrap() { m_pFileAccess = nullptr; }
+ CFPDF_FileAccessWrap() {
+ m_pFileAccess = nullptr;
+ m_nCurPos = 0;
+ }
~CFPDF_FileAccessWrap() override {}
void Set(FPDF_FILEACCESS* pFile) { m_pFileAccess = pFile; }
- // IFX_SeekableReadStream
+ bool IsEOF() override {
+ return m_nCurPos >=
+ pdfium::base::checked_cast<FX_FILESIZE>(m_pFileAccess->m_FileLen);
+ }
+
+ // IFX_FileRead
Tom Sepez 2016/11/16 18:32:01 nit: now called IFX_SeekableReadStream
FX_FILESIZE GetSize() override { return m_pFileAccess->m_FileLen; }
- bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
- return !!m_pFileAccess->m_GetBlock(m_pFileAccess->m_Param, offset,
- (uint8_t*)buffer, size);
+ size_t ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
+ int blockSize = m_pFileAccess->m_GetBlock(m_pFileAccess->m_Param, offset,
+ (uint8_t*)buffer, size);
+ m_nCurPos = offset + pdfium::base::checked_cast<FX_FILESIZE>(blockSize);
+ return pdfium::base::checked_cast<size_t>(blockSize);
}
void Release() override {}
private:
FPDF_FILEACCESS* m_pFileAccess;
+ FX_FILESIZE m_nCurPos;
};
class CFPDF_DownloadHintsWrap : public CPDF_DataAvail::DownloadHints {

Powered by Google App Engine
This is Rietveld 408576698