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

Unified Diff: xfa/fgas/crt/fgas_stream.cpp

Issue 2430743003: in the attempt to fix 627393, changed IFX_FileRead's readBlock to return the length it reads
Patch Set: remove .tmp files Created 4 years, 2 months 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: xfa/fgas/crt/fgas_stream.cpp
diff --git a/xfa/fgas/crt/fgas_stream.cpp b/xfa/fgas/crt/fgas_stream.cpp
index 74c19eab32f614f67128dff070d8577a0ae925ab..155a63a921395860691f7c010ed7d9c426a4d90b 100644
--- a/xfa/fgas/crt/fgas_stream.cpp
+++ b/xfa/fgas/crt/fgas_stream.cpp
@@ -296,12 +296,14 @@ class CFGAS_FileRead : public IFX_FileRead {
// IFX_FileRead
void Release() override;
+ FX_BOOL IsEOF() override;
FX_FILESIZE GetSize() override;
- FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
+ size_t ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
protected:
FX_BOOL m_bReleaseStream;
IFX_Stream* m_pStream;
+ FX_FILESIZE m_nCurPos;
};
int32_t FileLength(FXSYS_FILE* file) {
@@ -590,7 +592,9 @@ int32_t CFX_FileReadStreamImp::ReadData(uint8_t* pBuffer, int32_t iBufferSize) {
if (iBufferSize > m_iLength - m_iPosition) {
iBufferSize = m_iLength - m_iPosition;
}
- if (m_pFileRead->ReadBlock(pBuffer, m_iPosition, iBufferSize)) {
+ if (m_pFileRead->ReadBlock(pBuffer, m_iPosition, iBufferSize) ==
+ iBufferSize ||
+ m_pFileRead->IsEOF()) {
m_iPosition += iBufferSize;
return iBufferSize;
}
@@ -1473,7 +1477,7 @@ IFX_FileRead* FX_CreateFileRead(IFX_Stream* pBaseStream,
return new CFGAS_FileRead(pBaseStream, bReleaseStream);
}
CFGAS_FileRead::CFGAS_FileRead(IFX_Stream* pStream, FX_BOOL bReleaseStream)
- : m_bReleaseStream(bReleaseStream), m_pStream(pStream) {
+ : m_bReleaseStream(bReleaseStream), m_pStream(pStream), m_nCurPos(0) {
ASSERT(m_pStream);
}
CFGAS_FileRead::~CFGAS_FileRead() {
@@ -1481,15 +1485,19 @@ CFGAS_FileRead::~CFGAS_FileRead() {
m_pStream->Release();
}
}
+FX_BOOL CFGAS_FileRead::IsEOF() {
+ return m_nCurPos >= (FX_FILESIZE)m_pStream->GetLength();
+}
FX_FILESIZE CFGAS_FileRead::GetSize() {
return (FX_FILESIZE)m_pStream->GetLength();
}
-FX_BOOL CFGAS_FileRead::ReadBlock(void* buffer,
- FX_FILESIZE offset,
- size_t size) {
+size_t CFGAS_FileRead::ReadBlock(void* buffer,
+ FX_FILESIZE offset,
+ size_t size) {
m_pStream->Seek(FX_STREAMSEEK_Begin, (int32_t)offset);
int32_t iLen = m_pStream->ReadData((uint8_t*)buffer, (int32_t)size);
- return iLen == (int32_t)size;
+ m_nCurPos = offset + iLen;
+ return iLen;
}
void CFGAS_FileRead::Release() {

Powered by Google App Engine
This is Rietveld 408576698