diff options
-rw-r--r-- | core/fpdfdoc/cpdf_nametree.cpp | 16 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_nametree_unittest.cpp | 5 | ||||
-rw-r--r-- | fpdfsdk/fpdfview.cpp | 2 |
3 files changed, 12 insertions, 11 deletions
diff --git a/core/fpdfdoc/cpdf_nametree.cpp b/core/fpdfdoc/cpdf_nametree.cpp index 04cb1b9e40..f30a27c681 100644 --- a/core/fpdfdoc/cpdf_nametree.cpp +++ b/core/fpdfdoc/cpdf_nametree.cpp @@ -43,14 +43,14 @@ CPDF_Object* SearchNameNode(CPDF_Dictionary* pNode, for (size_t i = 0; i < dwCount; i++) { CFX_WideString csValue = pNames->GetUnicodeTextAt(i * 2); int32_t iCompare = csValue.Compare(csName); - if (iCompare <= 0) { - if (ppFind) - *ppFind = pNames; - if (iCompare < 0) - continue; - } else { + if (iCompare > 0) break; - } + + if (ppFind) + *ppFind = pNames; + if (iCompare < 0) + continue; + nIndex += i; return pNames->GetDirectObjectAt(i * 2 + 1); } @@ -170,7 +170,7 @@ int CPDF_NameTree::GetIndex(const CFX_WideString& csName) const { CPDF_Object* CPDF_NameTree::LookupValueAndName(int nIndex, CFX_WideString* csName) const { - *csName = CFX_WideString(); + csName->clear(); if (!m_pRoot) return nullptr; diff --git a/core/fpdfdoc/cpdf_nametree_unittest.cpp b/core/fpdfdoc/cpdf_nametree_unittest.cpp index 28af9e078d..bffb496843 100644 --- a/core/fpdfdoc/cpdf_nametree_unittest.cpp +++ b/core/fpdfdoc/cpdf_nametree_unittest.cpp @@ -16,8 +16,9 @@ TEST(cpdf_nametree, GetUnicodeNameWithBOM) { // Add the key "1" (with BOM) and value 100 into the array. std::ostringstream buf; - buf << static_cast<unsigned char>(254) << static_cast<unsigned char>(255) - << static_cast<unsigned char>(0) << static_cast<unsigned char>(49); + constexpr char kData[] = "\xFE\xFF\x00\x31"; + for (size_t i = 0; i < sizeof(kData); ++i) + buf.put(kData[i]); pNames->AddNew<CPDF_String>(CFX_ByteString(buf), true); pNames->AddNew<CPDF_Number>(100); diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp index 7dbaf7f9e7..f8823c994c 100644 --- a/fpdfsdk/fpdfview.cpp +++ b/fpdfsdk/fpdfview.cpp @@ -1397,7 +1397,6 @@ DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, return nullptr; CPDF_Object* pDestObj = nullptr; - CFX_ByteString bsName; CFX_WideString wsName; CPDF_NameTree nameTree(pDoc, "Dests"); int count = nameTree.GetCount(); @@ -1413,6 +1412,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, index -= count; int i = 0; + CFX_ByteString bsName; for (const auto& it : *pDest) { bsName = it.first; pDestObj = it.second.get(); |