| Index: core/fpdfapi/page/cpdf_streamcontentparser.cpp
|
| diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
|
| index 8c6038d626b4742e8e7382b6a2a0d9edac70205f..2bc80cc5c94a4442a7fa63dd93b8d3636bb56b1e 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() {
|
|
|