| Index: core/fpdfapi/page/cpdf_streamcontentparser.cpp
|
| diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.cpp b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
|
| index ed6701382c8db3dc3198204c7f9b9b04e5c4b958..7618f8271f2e25d93652081b3d1ce79b650bb8ad 100644
|
| --- a/core/fpdfapi/page/cpdf_streamcontentparser.cpp
|
| +++ b/core/fpdfapi/page/cpdf_streamcontentparser.cpp
|
| @@ -180,12 +180,8 @@ CPDF_StreamContentParser::CPDF_StreamContentParser(
|
| CPDF_StreamContentParser::~CPDF_StreamContentParser() {
|
| ClearAllParams();
|
| FX_Free(m_pPathPoints);
|
| - if (m_pLastImageDict) {
|
| - m_pLastImageDict->Release();
|
| - }
|
| - if (m_pLastCloneImageDict) {
|
| - m_pLastCloneImageDict->Release();
|
| - }
|
| + delete m_pLastImageDict;
|
| + delete m_pLastCloneImageDict;
|
| }
|
|
|
| int CPDF_StreamContentParser::GetNextParamPos() {
|
| @@ -194,10 +190,9 @@ int CPDF_StreamContentParser::GetNextParamPos() {
|
| if (m_ParamStartPos == kParamBufSize) {
|
| m_ParamStartPos = 0;
|
| }
|
| - if (m_ParamBuf[m_ParamStartPos].m_Type == 0) {
|
| - if (CPDF_Object* pObject = m_ParamBuf[m_ParamStartPos].m_pObject)
|
| - pObject->Release();
|
| - }
|
| + if (m_ParamBuf[m_ParamStartPos].m_Type == 0)
|
| + delete m_ParamBuf[m_ParamStartPos].m_pObject;
|
| +
|
| return m_ParamStartPos;
|
| }
|
| int index = m_ParamStartPos + m_ParamCount;
|
| @@ -244,10 +239,9 @@ void CPDF_StreamContentParser::AddObjectParam(CPDF_Object* pObj) {
|
| void CPDF_StreamContentParser::ClearAllParams() {
|
| uint32_t index = m_ParamStartPos;
|
| for (uint32_t i = 0; i < m_ParamCount; i++) {
|
| - if (m_ParamBuf[index].m_Type == 0) {
|
| - if (CPDF_Object* pObject = m_ParamBuf[index].m_pObject)
|
| - pObject->Release();
|
| - }
|
| + if (m_ParamBuf[index].m_Type == 0)
|
| + delete m_ParamBuf[index].m_pObject;
|
| +
|
| index++;
|
| if (index == kParamBufSize) {
|
| index = 0;
|
| @@ -531,7 +525,7 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
|
| m_pSyntax->GetWordSize());
|
| if (bsKeyword != "ID") {
|
| m_pSyntax->SetPos(savePos);
|
| - pDict->Release();
|
| + delete pDict;
|
| return;
|
| }
|
| }
|
| @@ -540,8 +534,7 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
|
| }
|
| CFX_ByteString key((const FX_CHAR*)m_pSyntax->GetWordBuf() + 1,
|
| m_pSyntax->GetWordSize() - 1);
|
| - std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj(
|
| - m_pSyntax->ReadNextObject(false, 0));
|
| + std::unique_ptr<CPDF_Object> pObj(m_pSyntax->ReadNextObject(false, 0));
|
| if (!key.IsEmpty()) {
|
| uint32_t dwObjNum = pObj ? pObj->GetObjNum() : 0;
|
| if (dwObjNum)
|
| @@ -566,7 +559,8 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
|
| }
|
| }
|
| pDict->SetNameFor("Subtype", "Image");
|
| - UniqueStream pStream(m_pSyntax->ReadInlineStream(m_pDocument, pDict, pCSObj));
|
| + std::unique_ptr<CPDF_Stream> pStream(
|
| + m_pSyntax->ReadInlineStream(m_pDocument, pDict, pCSObj));
|
| bool bGaveDictAway = !!pStream;
|
| while (1) {
|
| CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
|
| @@ -583,7 +577,7 @@ void CPDF_StreamContentParser::Handle_BeginImage() {
|
| }
|
| CPDF_ImageObject* pImgObj = AddImage(std::move(pStream));
|
| if (!pImgObj && !bGaveDictAway)
|
| - pDict->Release();
|
| + delete pDict;
|
| }
|
|
|
| void CPDF_StreamContentParser::Handle_BeginMarkedContent() {
|
| @@ -669,10 +663,10 @@ void CPDF_StreamContentParser::Handle_ExecuteXObject() {
|
| type = pXObject->GetDict()->GetStringFor("Subtype");
|
|
|
| if (type == "Image") {
|
| - CPDF_ImageObject* pObj =
|
| - pXObject->IsInline()
|
| - ? AddImage(UniqueStream(ToStream(pXObject->Clone())))
|
| - : AddImage(pXObject->GetObjNum());
|
| + CPDF_ImageObject* pObj = pXObject->IsInline()
|
| + ? AddImage(std::unique_ptr<CPDF_Stream>(
|
| + ToStream(pXObject->Clone())))
|
| + : AddImage(pXObject->GetObjNum());
|
|
|
| m_LastImageName = name;
|
| m_pLastImage = pObj->GetImage();
|
| @@ -704,7 +698,8 @@ void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) {
|
| m_pObjectHolder->GetPageObjectList()->push_back(std::move(pFormObj));
|
| }
|
|
|
| -CPDF_ImageObject* CPDF_StreamContentParser::AddImage(UniqueStream pStream) {
|
| +CPDF_ImageObject* CPDF_StreamContentParser::AddImage(
|
| + std::unique_ptr<CPDF_Stream> pStream) {
|
| if (!pStream)
|
| return nullptr;
|
|
|
|
|