diff options
author | tsepez <tsepez@chromium.org> | 2016-11-16 17:31:18 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-11-16 17:31:18 -0800 |
commit | 5913a6ca71c85401e3f5317758d44a9fc4a667b2 (patch) | |
tree | 388ad0bd98b44a47c251568e198e2c3c231c7d30 /core/fpdfapi/parser/cpdf_string.cpp | |
parent | cc4d0a44f3025821f88f3ed1ee78dfdc416487c7 (diff) | |
download | pdfium-5913a6ca71c85401e3f5317758d44a9fc4a667b2.tar.xz |
Make CPDF_Object subclass constructors intern strings
Make CDPF_Arrays intern the object they create.
Allow passing nullptr as a CFX_WeakPtr shortcut as well.
Review-Url: https://codereview.chromium.org/2509123002
Diffstat (limited to 'core/fpdfapi/parser/cpdf_string.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_string.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/core/fpdfapi/parser/cpdf_string.cpp b/core/fpdfapi/parser/cpdf_string.cpp index 2116c200fe..fd4ff04ff7 100644 --- a/core/fpdfapi/parser/cpdf_string.cpp +++ b/core/fpdfapi/parser/cpdf_string.cpp @@ -11,8 +11,13 @@ CPDF_String::CPDF_String() : m_bHex(false) {} -CPDF_String::CPDF_String(const CFX_ByteString& str, bool bHex) - : m_String(str), m_bHex(bHex) {} +CPDF_String::CPDF_String(CFX_WeakPtr<CFX_ByteStringPool> pPool, + const CFX_ByteString& str, + bool bHex) + : m_String(str), m_bHex(bHex) { + if (pPool) + m_String = pPool->Intern(m_String); +} CPDF_String::CPDF_String(const CFX_WideString& str) : m_bHex(false) { m_String = PDF_EncodeText(str); @@ -25,7 +30,10 @@ CPDF_Object::Type CPDF_String::GetType() const { } std::unique_ptr<CPDF_Object> CPDF_String::Clone() const { - return pdfium::MakeUnique<CPDF_String>(m_String, m_bHex); + auto pRet = pdfium::MakeUnique<CPDF_String>(); + pRet->m_String = m_String; + pRet->m_bHex = m_bHex; + return std::move(pRet); } CFX_ByteString CPDF_String::GetString() const { |