diff options
author | Artem Strygin <art-snake@yandex-team.ru> | 2018-06-06 16:30:24 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-06-06 16:30:24 +0000 |
commit | ce4b14ef28ea4c78fe07f271c7185fe9766f7c55 (patch) | |
tree | 7861a77583cc957e7c6dbc0d749d4c6df85487ad /core/fpdfapi/parser/cpdf_data_avail.cpp | |
parent | 8ae320912348c162d2b90f1dc7b7528999bbb305 (diff) | |
download | pdfium-ce4b14ef28ea4c78fe07f271c7185fe9766f7c55.tar.xz |
Simplify check info availability.
Change-Id: I4475b83f69426b135c304d5861f0b7bb582deb81
Reviewed-on: https://pdfium-review.googlesource.com/17731
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Art Snake <art-snake@yandex-team.ru>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_data_avail.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_data_avail.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp index cc75ee37f1..0b1788b0a6 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.cpp +++ b/core/fpdfapi/parser/cpdf_data_avail.cpp @@ -199,7 +199,6 @@ bool CPDF_DataAvail::CheckAndLoadAllXref() { } m_dwRootObjNum = m_parser.GetRootObjNum(); - m_dwInfoObjNum = m_parser.GetInfoObjNum(); m_docStatus = PDF_DATAAVAIL_ROOT; return true; } @@ -228,15 +227,17 @@ std::unique_ptr<CPDF_Object> CPDF_DataAvail::GetObject(uint32_t objnum, } bool CPDF_DataAvail::CheckInfo() { - bool bExist = false; - std::unique_ptr<CPDF_Object> pInfo = GetObject(m_dwInfoObjNum, &bExist); - if (bExist && !pInfo) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return true; - } - return false; + const uint32_t dwInfoObjNum = m_parser.GetInfoObjNum(); + if (dwInfoObjNum == CPDF_Object::kInvalidObjNum) { + m_docStatus = PDF_DATAAVAIL_PAGETREE; + return true; } + + const CPDF_ReadValidator::Session read_session(GetValidator().Get()); + m_parser.ParseIndirectObject(nullptr, dwInfoObjNum); + if (GetValidator()->has_read_problems()) + return false; + m_docStatus = PDF_DATAAVAIL_PAGETREE; return true; } @@ -271,7 +272,7 @@ bool CPDF_DataAvail::CheckRoot() { m_PagesObjNum = pRef->GetRefObjNum(); - m_docStatus = m_dwInfoObjNum ? PDF_DATAAVAIL_INFO : PDF_DATAAVAIL_PAGETREE; + m_docStatus = PDF_DATAAVAIL_INFO; return true; } |