summaryrefslogtreecommitdiff
path: root/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp')
-rw-r--r--core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index ad1ffaf687..654b69ec4a 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -52,10 +52,9 @@ void CPDF_PageContentGenerator::GenerateContent() {
if (pContent)
pPageDict->RemoveFor("Contents");
- CPDF_Stream* pStream = new CPDF_Stream;
+ CPDF_Stream* pStream = m_pDocument->AddIndirectStream();
pStream->SetData(buf.GetBuffer(), buf.GetLength());
- pPageDict->SetReferenceFor("Contents", m_pDocument,
- m_pDocument->AddIndirectObject(pStream));
+ pPageDict->SetReferenceFor("Contents", m_pDocument, pStream);
}
CFX_ByteString CPDF_PageContentGenerator::RealizeResource(
@@ -63,10 +62,9 @@ CFX_ByteString CPDF_PageContentGenerator::RealizeResource(
const CFX_ByteString& bsType) {
if (!m_pPage->m_pResources) {
m_pPage->m_pResources =
- new CPDF_Dictionary(m_pDocument->GetByteStringPool());
- m_pPage->m_pFormDict->SetReferenceFor(
- "Resources", m_pDocument,
- m_pDocument->AddIndirectObject(m_pPage->m_pResources));
+ m_pDocument->AddIndirectDictionary(m_pDocument->GetByteStringPool());
+ m_pPage->m_pFormDict->SetReferenceFor("Resources", m_pDocument,
+ m_pPage->m_pResources);
}
CPDF_Dictionary* pResList = m_pPage->m_pResources->GetDictFor(bsType);
if (!pResList) {
@@ -82,8 +80,9 @@ CFX_ByteString CPDF_PageContentGenerator::RealizeResource(
}
idnum++;
}
- pResList->SetReferenceFor(name, m_pDocument,
- m_pDocument->AddIndirectObject(pResourceObj));
+ // TODO(tsepez): check |pResourceObj| ownership.
+ pResList->SetReferenceFor(name, m_pDocument, m_pDocument->AddIndirectObject(
+ UniqueObject(pResourceObj)));
return name;
}
@@ -170,8 +169,7 @@ void CPDF_PageContentGenerator::TransformContent(CFX_Matrix& matrix) {
contentStream.LoadAllData(pStream);
ProcessForm(buf, contentStream.GetData(), contentStream.GetSize(), matrix);
}
- CPDF_Stream* pStream = new CPDF_Stream;
+ CPDF_Stream* pStream = m_pDocument->AddIndirectStream();
pStream->SetData(buf.GetBuffer(), buf.GetLength());
- m_pPage->m_pFormDict->SetReferenceFor(
- "Contents", m_pDocument, m_pDocument->AddIndirectObject(pStream));
+ m_pPage->m_pFormDict->SetReferenceFor("Contents", m_pDocument, pStream);
}