Index: core/fpdfapi/parser/cpdf_document.cpp |
diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp |
index 83123b27c6be24d89b0fac07812ab793c26b8c23..9d1db26e306cfd5d5e017dae4f902ba110476ba4 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<CPDF_Parser> pParser) |
m_iFirstPageNo(0), |
m_dwFirstPageObjNum(0), |
m_pDocPage(new CPDF_DocPageData(this)), |
- m_pDocRender(new CPDF_DocRenderData(this)), |
- m_pByteStringPool(pdfium::MakeUnique<CFX_ByteStringPool>()) { |
+ m_pDocRender(new CPDF_DocRenderData(this)) { |
if (pParser) |
SetLastObjNum(m_pParser->GetLastObjNum()); |
} |
@@ -352,7 +351,6 @@ CPDF_Document::CPDF_Document(std::unique_ptr<CPDF_Parser> pParser) |
CPDF_Document::~CPDF_Document() { |
delete m_pDocPage; |
CPDF_ModuleMgr::Get()->GetPageModule()->ClearStockFont(this); |
- m_pByteStringPool.DeleteObject(); // Make weak. |
} |
std::unique_ptr<CPDF_Object> 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<CPDF_Dictionary>(m_pByteStringPool); |
+ m_pRootDict = NewIndirect<CPDF_Dictionary>(GetByteStringPool()); |
m_pRootDict->SetNameFor("Type", "Catalog"); |
- CPDF_Dictionary* pPages = NewIndirect<CPDF_Dictionary>(m_pByteStringPool); |
+ CPDF_Dictionary* pPages = NewIndirect<CPDF_Dictionary>(GetByteStringPool()); |
pPages->SetNameFor("Type", "Pages"); |
pPages->SetNumberFor("Count", 0); |
pPages->SetFor("Kids", new CPDF_Array); |
m_pRootDict->SetReferenceFor("Pages", this, pPages); |
- m_pInfoDict = NewIndirect<CPDF_Dictionary>(m_pByteStringPool); |
+ m_pInfoDict = NewIndirect<CPDF_Dictionary>(GetByteStringPool()); |
} |
CPDF_Dictionary* CPDF_Document::CreateNewPage(int iPage) { |
- CPDF_Dictionary* pDict = NewIndirect<CPDF_Dictionary>(m_pByteStringPool); |
+ CPDF_Dictionary* pDict = NewIndirect<CPDF_Dictionary>(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<CPDF_Dictionary>(m_pByteStringPool); |
+ NewIndirect<CPDF_Dictionary>(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<void(FX_WCHAR, FX_WCHAR, CPDF_Array*)> Insert) { |
- CPDF_Dictionary* pFontDict = NewIndirect<CPDF_Dictionary>(m_pByteStringPool); |
+ CPDF_Dictionary* pFontDict = |
+ NewIndirect<CPDF_Dictionary>(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<CPDF_Dictionary>(m_pByteStringPool); |
+ CPDF_Dictionary* pBaseDict = |
+ NewIndirect<CPDF_Dictionary>(GetByteStringPool()); |
pBaseDict->SetNameFor("Type", "Font"); |
std::unique_ptr<CFX_UnicodeEncoding> 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<CPDF_Dictionary>(m_pByteStringPool); |
+ CPDF_Dictionary* pBaseDict = |
+ NewIndirect<CPDF_Dictionary>(GetByteStringPool()); |
pBaseDict->SetNameFor("Type", "Font"); |
CPDF_Dictionary* pFontDict = pBaseDict; |
if (!bCJK) { |