Fix for a bug where no valid codepoints are recognized in certain PDFs.
Bug:chromium:909762
Change-Id: Idd43d28130bd58292c085d9507f9e7ed5ca6c8be
Reviewed-on: https://pdfium-review.googlesource.com/c/45872
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cmapparser.cpp b/core/fpdfapi/font/cpdf_cmapparser.cpp
index fca1c92..4707022 100644
--- a/core/fpdfapi/font/cpdf_cmapparser.cpp
+++ b/core/fpdfapi/font/cpdf_cmapparser.cpp
@@ -110,9 +110,11 @@
} else if (m_Status == 7) {
if (word == "endcodespacerange") {
const auto& code_ranges = m_pCMap->GetMixedFourByteLeadingRanges();
- size_t nSegs = code_ranges.size();
+ size_t nSegs = code_ranges.size() + m_PendingRanges.size();
if (nSegs == 1) {
- m_pCMap->SetCodingScheme((code_ranges[0].m_CharSize == 2)
+ const auto& first_range =
+ code_ranges.size() > 0 ? code_ranges[0] : m_PendingRanges[0];
+ m_pCMap->SetCodingScheme((first_range.m_CharSize == 2)
? CPDF_CMap::TwoBytes
: CPDF_CMap::OneByte);
} else if (nSegs > 1) {