summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_data_avail.cpp
diff options
context:
space:
mode:
authorArtem Strygin <art-snake@yandex-team.ru>2018-08-02 19:19:27 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-08-02 19:19:27 +0000
commit2d2b9934996277801a63bb0670899030dcdbcd35 (patch)
tree80dd13b8d4846640bd549543e720268258a3af40 /core/fpdfapi/parser/cpdf_data_avail.cpp
parente89d258be505877a6f73d36b3b84a41e4ee37ea8 (diff)
downloadpdfium-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.cpp27
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;
}