From cc4d0a44f3025821f88f3ed1ee78dfdc416487c7 Mon Sep 17 00:00:00 2001 From: tsepez Date: Wed, 16 Nov 2016 14:45:42 -0800 Subject: Move ByteStringPool from document to indirect object holder. Since the indirect object holder is now in the object creation business, this will allow it to intern strings in a subsequent CL. Review-Url: https://codereview.chromium.org/2509773003 --- core/fpdfapi/parser/cpdf_document.cpp | 25 +++++++++++++------------ 1 file changed, 13 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 83123b27c6..9d1db26e30 100644 --- a/core/fpdfapi/parser/cpdf_document.cpp +++ b/core/fpdfapi/parser/cpdf_document.cpp @@ -343,8 +343,7 @@ CPDF_Document::CPDF_Document(std::unique_ptr pParser) m_iFirstPageNo(0), m_dwFirstPageObjNum(0), m_pDocPage(new CPDF_DocPageData(this)), - m_pDocRender(new CPDF_DocRenderData(this)), - m_pByteStringPool(pdfium::MakeUnique()) { + m_pDocRender(new CPDF_DocRenderData(this)) { if (pParser) SetLastObjNum(m_pParser->GetLastObjNum()); } @@ -352,7 +351,6 @@ CPDF_Document::CPDF_Document(std::unique_ptr pParser) CPDF_Document::~CPDF_Document() { delete m_pDocPage; CPDF_ModuleMgr::Get()->GetPageModule()->ClearStockFont(this); - m_pByteStringPool.DeleteObject(); // Make weak. } std::unique_ptr CPDF_Document::ParseIndirectObject( @@ -649,19 +647,19 @@ CPDF_Image* CPDF_Document::LoadImageFromPageData(uint32_t dwStreamObjNum) { void CPDF_Document::CreateNewDoc() { ASSERT(!m_pRootDict && !m_pInfoDict); - m_pRootDict = NewIndirect(m_pByteStringPool); + m_pRootDict = NewIndirect(GetByteStringPool()); m_pRootDict->SetNameFor("Type", "Catalog"); - CPDF_Dictionary* pPages = NewIndirect(m_pByteStringPool); + CPDF_Dictionary* pPages = NewIndirect(GetByteStringPool()); pPages->SetNameFor("Type", "Pages"); pPages->SetNumberFor("Count", 0); pPages->SetFor("Kids", new CPDF_Array); m_pRootDict->SetReferenceFor("Pages", this, pPages); - m_pInfoDict = NewIndirect(m_pByteStringPool); + m_pInfoDict = NewIndirect(GetByteStringPool()); } CPDF_Dictionary* CPDF_Document::CreateNewPage(int iPage) { - CPDF_Dictionary* pDict = NewIndirect(m_pByteStringPool); + CPDF_Dictionary* pDict = NewIndirect(GetByteStringPool()); pDict->SetNameFor("Type", "Page"); uint32_t dwObjNum = pDict->GetObjNum(); if (!InsertNewPage(iPage, pDict)) { @@ -781,7 +779,7 @@ size_t CPDF_Document::CalculateEncodingDict(int charset, return i; CPDF_Dictionary* pEncodingDict = - NewIndirect(m_pByteStringPool); + NewIndirect(GetByteStringPool()); pEncodingDict->SetNameFor("BaseEncoding", "WinAnsiEncoding"); CPDF_Array* pArray = new CPDF_Array; @@ -803,7 +801,8 @@ CPDF_Dictionary* CPDF_Document::ProcessbCJK( bool bVert, CFX_ByteString basefont, std::function Insert) { - CPDF_Dictionary* pFontDict = NewIndirect(m_pByteStringPool); + CPDF_Dictionary* pFontDict = + NewIndirect(GetByteStringPool()); CFX_ByteString cmap; CFX_ByteString ordering; int supplement = 0; @@ -853,7 +852,7 @@ CPDF_Dictionary* CPDF_Document::ProcessbCJK( pFontDict->SetNameFor("Type", "Font"); pFontDict->SetNameFor("Subtype", "CIDFontType2"); pFontDict->SetNameFor("BaseFont", basefont); - CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary(m_pByteStringPool); + CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary(GetByteStringPool()); pCIDSysInfo->SetStringFor("Registry", "Adobe"); pCIDSysInfo->SetStringFor("Ordering", ordering); pCIDSysInfo->SetIntegerFor("Supplement", supplement); @@ -878,7 +877,8 @@ 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(m_pByteStringPool); + CPDF_Dictionary* pBaseDict = + NewIndirect(GetByteStringPool()); pBaseDict->SetNameFor("Type", "Font"); std::unique_ptr pEncoding( new CFX_UnicodeEncoding(pFont)); @@ -1008,7 +1008,8 @@ CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont, ptm->otmrcFontBox.right, ptm->otmrcFontBox.top}; FX_Free(tm_buf); basefont.Replace(" ", ""); - CPDF_Dictionary* pBaseDict = NewIndirect(m_pByteStringPool); + CPDF_Dictionary* pBaseDict = + NewIndirect(GetByteStringPool()); pBaseDict->SetNameFor("Type", "Font"); CPDF_Dictionary* pFontDict = pBaseDict; if (!bCJK) { -- cgit v1.2.3