Chromium Code Reviews| 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..79f206d8f576645bdd9e725cf53ead9259849a24 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"); |
| @@ -672,8 +671,7 @@ 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; |
| + m_pSyntax->ReadInlineStream(m_pDocument, std::move(pDict), pCSObj)); |
|
Tom Sepez
2016/11/22 01:14:49
Hmmm. Maybe this needs to return U.P. too.
Tom Sepez
2016/11/22 01:16:37
Turns out it already does. Fixed.
|
| 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() { |