summaryrefslogtreecommitdiff
path: root/core/fpdfapi/page/cpdf_streamcontentparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/page/cpdf_streamcontentparser.cpp')
-rw-r--r--core/fpdfapi/page/cpdf_streamcontentparser.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
index 8c6038d626..2bc80cc5c9 100644
--- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp
+++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
@@ -630,8 +630,8 @@ void CPDF_StreamContentParser::Handle_BeginMarkedContent_Dictionary() {
void CPDF_StreamContentParser::Handle_BeginImage() {
FX_FILESIZE savePos = m_pSyntax->GetPos();
- CPDF_Dictionary* pDict =
- new CPDF_Dictionary(m_pDocument->GetByteStringPool());
+ auto pDict =
+ pdfium::MakeUnique<CPDF_Dictionary>(m_pDocument->GetByteStringPool());
while (1) {
CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
if (type == CPDF_StreamParser::Keyword) {
@@ -639,7 +639,6 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
m_pSyntax->GetWordSize());
if (bsKeyword != "ID") {
m_pSyntax->SetPos(savePos);
- delete pDict;
return;
}
}
@@ -657,7 +656,7 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
pDict->SetFor(key, std::move(pObj));
}
}
- ReplaceAbbr(pDict);
+ ReplaceAbbr(pDict.get());
CPDF_Object* pCSObj = nullptr;
if (pDict->KeyExist("ColorSpace")) {
pCSObj = pDict->GetDirectObjectFor("ColorSpace");
@@ -671,9 +670,8 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
}
}
pDict->SetNewFor<CPDF_Name>("Subtype", "Image");
- std::unique_ptr<CPDF_Stream> pStream(
- m_pSyntax->ReadInlineStream(m_pDocument, pDict, pCSObj));
- bool bGaveDictAway = !!pStream;
+ std::unique_ptr<CPDF_Stream> pStream =
+ m_pSyntax->ReadInlineStream(m_pDocument, std::move(pDict), pCSObj);
while (1) {
CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
if (type == CPDF_StreamParser::EndOfData) {
@@ -687,9 +685,7 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
break;
}
}
- CPDF_ImageObject* pImgObj = AddImage(std::move(pStream));
- if (!pImgObj && !bGaveDictAway)
- delete pDict;
+ AddImage(std::move(pStream));
}
void CPDF_StreamContentParser::Handle_BeginMarkedContent() {