From 5913a6ca71c85401e3f5317758d44a9fc4a667b2 Mon Sep 17 00:00:00 2001 From: tsepez Date: Wed, 16 Nov 2016 17:31:18 -0800 Subject: 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 --- core/fpdfapi/parser/cpdf_document.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'core/fpdfapi/parser/cpdf_document.cpp') diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp index 9d1db26e30..c7f99fa6ef 100644 --- a/core/fpdfapi/parser/cpdf_document.cpp +++ b/core/fpdfapi/parser/cpdf_document.cpp @@ -647,19 +647,19 @@ CPDF_Image* CPDF_Document::LoadImageFromPageData(uint32_t dwStreamObjNum) { void CPDF_Document::CreateNewDoc() { ASSERT(!m_pRootDict && !m_pInfoDict); - m_pRootDict = NewIndirect(GetByteStringPool()); + m_pRootDict = NewIndirect(); m_pRootDict->SetNameFor("Type", "Catalog"); - CPDF_Dictionary* pPages = NewIndirect(GetByteStringPool()); + CPDF_Dictionary* pPages = NewIndirect(); pPages->SetNameFor("Type", "Pages"); pPages->SetNumberFor("Count", 0); pPages->SetFor("Kids", new CPDF_Array); m_pRootDict->SetReferenceFor("Pages", this, pPages); - m_pInfoDict = NewIndirect(GetByteStringPool()); + m_pInfoDict = NewIndirect(); } CPDF_Dictionary* CPDF_Document::CreateNewPage(int iPage) { - CPDF_Dictionary* pDict = NewIndirect(GetByteStringPool()); + CPDF_Dictionary* pDict = NewIndirect(); pDict->SetNameFor("Type", "Page"); uint32_t dwObjNum = pDict->GetObjNum(); if (!InsertNewPage(iPage, pDict)) { @@ -778,8 +778,7 @@ size_t CPDF_Document::CalculateEncodingDict(int charset, if (i == FX_ArraySize(g_FX_CharsetUnicodes)) return i; - CPDF_Dictionary* pEncodingDict = - NewIndirect(GetByteStringPool()); + CPDF_Dictionary* pEncodingDict = NewIndirect(); pEncodingDict->SetNameFor("BaseEncoding", "WinAnsiEncoding"); CPDF_Array* pArray = new CPDF_Array; @@ -801,8 +800,7 @@ CPDF_Dictionary* CPDF_Document::ProcessbCJK( bool bVert, CFX_ByteString basefont, std::function Insert) { - CPDF_Dictionary* pFontDict = - NewIndirect(GetByteStringPool()); + CPDF_Dictionary* pFontDict = NewIndirect(); CFX_ByteString cmap; CFX_ByteString ordering; int supplement = 0; @@ -877,8 +875,7 @@ CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, bool bVert) { CalculateFlags(pFont->IsBold(), pFont->IsItalic(), pFont->IsFixedWidth(), false, false, charset == FXFONT_SYMBOL_CHARSET); - CPDF_Dictionary* pBaseDict = - NewIndirect(GetByteStringPool()); + CPDF_Dictionary* pBaseDict = NewIndirect(); pBaseDict->SetNameFor("Type", "Font"); std::unique_ptr pEncoding( new CFX_UnicodeEncoding(pFont)); @@ -1008,8 +1005,7 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont, ptm->otmrcFontBox.right, ptm->otmrcFontBox.top}; FX_Free(tm_buf); basefont.Replace(" ", ""); - CPDF_Dictionary* pBaseDict = - NewIndirect(GetByteStringPool()); + CPDF_Dictionary* pBaseDict = NewIndirect(); pBaseDict->SetNameFor("Type", "Font"); CPDF_Dictionary* pFontDict = pBaseDict; if (!bCJK) { -- cgit v1.2.3