diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfdoc/cpdf_nametree.cpp | 16 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_nametree_unittest.cpp | 5 |
2 files changed, 11 insertions, 10 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); |