diff options
author | Artem Strygin <art-snake@yandex-team.ru> | 2018-08-02 19:19:27 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-08-02 19:19:27 +0000 |
commit | 2d2b9934996277801a63bb0670899030dcdbcd35 (patch) | |
tree | 80dd13b8d4846640bd549543e720268258a3af40 /core/fpdfapi/parser/cpdf_data_avail.cpp | |
parent | e89d258be505877a6f73d36b3b84a41e4ee37ea8 (diff) | |
download | pdfium-2d2b9934996277801a63bb0670899030dcdbcd35.tar.xz |
Rework of CPDF_DataAvail::CheckHintTables.
Move HintTables parsing logic into CPDF_HintTables.
Change-Id: I9748179fe9fc3ac44f88c19c347e30c0e7e3ac67
Reviewed-on: https://pdfium-review.googlesource.com/38771
Reviewed-by: Lei Zhang <thestig@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 | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp index 41d410a87b..904b0ad9fc 100644 --- a/core/fpdfapi/parser/cpdf_data_avail.cpp +++ b/core/fpdfapi/parser/cpdf_data_avail.cpp @@ -437,30 +437,17 @@ bool CPDF_DataAvail::CheckFirstPage() { } bool CPDF_DataAvail::CheckHintTables() { - if (m_pLinearized->GetPageCount() <= 1) { - m_docStatus = PDF_DATAAVAIL_DONE; - return true; - } - if (!m_pLinearized->HasHintTable()) { + const CPDF_ReadValidator::Session read_session(GetValidator().Get()); + m_pHintTables = + CPDF_HintTables::Parse(GetSyntaxParser(), m_pLinearized.get()); + + if (GetValidator()->read_error()) { m_docStatus = PDF_DATAAVAIL_ERROR; - return false; + return true; } - - const FX_FILESIZE szHintStart = m_pLinearized->GetHintStart(); - const uint32_t szHintLength = m_pLinearized->GetHintLength(); - - if (!GetValidator()->CheckDataRangeAndRequestIfUnavailable(szHintStart, - szHintLength)) + if (GetValidator()->has_unavailable_data()) return false; - auto pHintTables = pdfium::MakeUnique<CPDF_HintTables>(GetValidator().Get(), - m_pLinearized.get()); - std::unique_ptr<CPDF_Object> pHintStream = - ParseIndirectObjectAt(szHintStart, 0); - CPDF_Stream* pStream = ToStream(pHintStream.get()); - if (pStream && pHintTables->LoadHintStream(pStream)) - m_pHintTables = std::move(pHintTables); - m_docStatus = PDF_DATAAVAIL_DONE; return true; } |