diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp
index 41d410a..904b0ad 100644
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp
@@ -437,29 +437,16 @@
 }
 
 bool CPDF_DataAvail::CheckHintTables() {
-  if (m_pLinearized->GetPageCount() <= 1) {
-    m_docStatus = PDF_DATAAVAIL_DONE;
+  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 true;
   }
-  if (!m_pLinearized->HasHintTable()) {
-    m_docStatus = PDF_DATAAVAIL_ERROR;
+  if (GetValidator()->has_unavailable_data())
     return false;
-  }
-
-  const FX_FILESIZE szHintStart = m_pLinearized->GetHintStart();
-  const uint32_t szHintLength = m_pLinearized->GetHintLength();
-
-  if (!GetValidator()->CheckDataRangeAndRequestIfUnavailable(szHintStart,
-                                                             szHintLength))
-    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;
diff --git a/core/fpdfapi/parser/cpdf_hint_tables.cpp b/core/fpdfapi/parser/cpdf_hint_tables.cpp
index 71fb6e2..43c3138 100644
--- a/core/fpdfapi/parser/cpdf_hint_tables.cpp
+++ b/core/fpdfapi/parser/cpdf_hint_tables.cpp
@@ -16,6 +16,7 @@
 #include "core/fpdfapi/parser/cpdf_read_validator.h"
 #include "core/fpdfapi/parser/cpdf_stream.h"
 #include "core/fpdfapi/parser/cpdf_stream_acc.h"
+#include "core/fpdfapi/parser/cpdf_syntax_parser.h"
 #include "core/fxcrt/cfx_bitstream.h"
 #include "core/fxcrt/fx_safe_types.h"
 #include "third_party/base/numerics/safe_conversions.h"
@@ -40,6 +41,39 @@
 CPDF_HintTables::PageInfo::PageInfo() = default;
 CPDF_HintTables::PageInfo::~PageInfo() = default;
 
+//  static
+std::unique_ptr<CPDF_HintTables> CPDF_HintTables::Parse(
+    CPDF_SyntaxParser* parser,
+    CPDF_LinearizedHeader* pLinearized) {
+  ASSERT(parser);
+  if (!pLinearized || pLinearized->GetPageCount() <= 1 ||
+      !pLinearized->HasHintTable()) {
+    return nullptr;
+  }
+
+  const FX_FILESIZE szHintStart = pLinearized->GetHintStart();
+  const uint32_t szHintLength = pLinearized->GetHintLength();
+
+  if (!parser->GetValidator()->CheckDataRangeAndRequestIfUnavailable(
+          szHintStart, szHintLength)) {
+    return nullptr;
+  }
+
+  parser->SetPos(szHintStart);
+  std::unique_ptr<CPDF_Stream> hints_stream = ToStream(
+      parser->GetIndirectObject(nullptr, CPDF_SyntaxParser::ParseType::kLoose));
+
+  if (!hints_stream)
+    return nullptr;
+
+  auto pHintTables = pdfium::MakeUnique<CPDF_HintTables>(
+      parser->GetValidator().Get(), pLinearized);
+  if (!pHintTables->LoadHintStream(hints_stream.get()))
+    return nullptr;
+
+  return pHintTables;
+}
+
 CPDF_HintTables::CPDF_HintTables(CPDF_ReadValidator* pValidator,
                                  CPDF_LinearizedHeader* pLinearized)
     : m_pValidator(pValidator),
diff --git a/core/fpdfapi/parser/cpdf_hint_tables.h b/core/fpdfapi/parser/cpdf_hint_tables.h
index 20ba9be..6b6a589 100644
--- a/core/fpdfapi/parser/cpdf_hint_tables.h
+++ b/core/fpdfapi/parser/cpdf_hint_tables.h
@@ -7,6 +7,7 @@
 #ifndef CORE_FPDFAPI_PARSER_CPDF_HINT_TABLES_H_
 #define CORE_FPDFAPI_PARSER_CPDF_HINT_TABLES_H_
 
+#include <memory>
 #include <vector>
 
 #include "core/fpdfapi/parser/cpdf_data_avail.h"
@@ -15,8 +16,9 @@
 
 class CFX_BitStream;
 class CPDF_LinearizedHeader;
-class CPDF_Stream;
 class CPDF_ReadValidator;
+class CPDF_Stream;
+class CPDF_SyntaxParser;
 
 class CPDF_HintTables {
  public:
@@ -67,6 +69,10 @@
     PageInfo& operator=(const PageInfo&) = delete;
   };
 
+  static std::unique_ptr<CPDF_HintTables> Parse(
+      CPDF_SyntaxParser* parser,
+      CPDF_LinearizedHeader* pLinearized);
+
   CPDF_HintTables(CPDF_ReadValidator* pValidator,
                   CPDF_LinearizedHeader* pLinearized);
   virtual ~CPDF_HintTables();
