| Index: core/fpdfapi/page/cpdf_docpagedata.cpp
|
| diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp
|
| index 1c99d523b0c1ae74d5ab58e53cb3706823df527b..af2618286e5b1ee683780fc548145788d4900a02 100644
|
| --- a/core/fpdfapi/page/cpdf_docpagedata.cpp
|
| +++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
|
| @@ -9,6 +9,7 @@
|
| #include <algorithm>
|
| #include <memory>
|
| #include <set>
|
| +#include <utility>
|
|
|
| #include "core/fdrm/crypto/fx_crypt.h"
|
| #include "core/fpdfapi/cpdf_modulemgr.h"
|
| @@ -143,9 +144,9 @@ CPDF_Font* CPDF_DocPageData::GetFont(CPDF_Dictionary* pFontDict) {
|
| return nullptr;
|
|
|
| if (pFontData) {
|
| - pFontData->reset(pFont.release());
|
| + pFontData->reset(std::move(pFont));
|
| } else {
|
| - pFontData = new CPDF_CountedFont(pFont.release());
|
| + pFontData = new CPDF_CountedFont(std::move(pFont));
|
| m_FontMap[pFontDict] = pFontData;
|
| }
|
| return pFontData->AddRef();
|
| @@ -190,7 +191,7 @@ CPDF_Font* CPDF_DocPageData::GetStandardFont(const CFX_ByteString& fontName,
|
| if (!pFont)
|
| return nullptr;
|
|
|
| - CPDF_CountedFont* fontData = new CPDF_CountedFont(pFont.release());
|
| + CPDF_CountedFont* fontData = new CPDF_CountedFont(std::move(pFont));
|
| m_FontMap[pDict] = fontData;
|
| return fontData->AddRef();
|
| }
|
| @@ -293,11 +294,11 @@ CPDF_ColorSpace* CPDF_DocPageData::GetColorSpaceImpl(
|
| if (!pCS)
|
| return nullptr;
|
|
|
| - if (!csData) {
|
| - csData = new CPDF_CountedColorSpace(pCS.release());
|
| - m_ColorSpaceMap[pCSObj] = csData;
|
| + if (csData) {
|
| + csData->reset(std::move(pCS));
|
| } else {
|
| - csData->reset(pCS.release());
|
| + csData = new CPDF_CountedColorSpace(std::move(pCS));
|
| + m_ColorSpaceMap[pCSObj] = csData;
|
| }
|
| return csData->AddRef();
|
| }
|
| @@ -348,29 +349,31 @@ CPDF_Pattern* CPDF_DocPageData::GetPattern(CPDF_Object* pPatternObj,
|
| return ptData->AddRef();
|
| }
|
| }
|
| - CPDF_Pattern* pPattern = nullptr;
|
| + std::unique_ptr<CPDF_Pattern> pPattern;
|
| if (bShading) {
|
| - pPattern = new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, true, matrix);
|
| + pPattern = pdfium::MakeUnique<CPDF_ShadingPattern>(m_pPDFDoc, pPatternObj,
|
| + true, matrix);
|
| } else {
|
| CPDF_Dictionary* pDict = pPatternObj ? pPatternObj->GetDict() : nullptr;
|
| if (pDict) {
|
| int type = pDict->GetIntegerFor("PatternType");
|
| if (type == CPDF_Pattern::TILING) {
|
| - pPattern = new CPDF_TilingPattern(m_pPDFDoc, pPatternObj, matrix);
|
| + pPattern = pdfium::MakeUnique<CPDF_TilingPattern>(m_pPDFDoc,
|
| + pPatternObj, matrix);
|
| } else if (type == CPDF_Pattern::SHADING) {
|
| - pPattern =
|
| - new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, false, matrix);
|
| + pPattern = pdfium::MakeUnique<CPDF_ShadingPattern>(
|
| + m_pPDFDoc, pPatternObj, false, matrix);
|
| }
|
| }
|
| }
|
| if (!pPattern)
|
| return nullptr;
|
|
|
| - if (!ptData) {
|
| - ptData = new CPDF_CountedPattern(pPattern);
|
| - m_PatternMap[pPatternObj] = ptData;
|
| + if (ptData) {
|
| + ptData->reset(std::move(pPattern));
|
| } else {
|
| - ptData->reset(pPattern);
|
| + ptData = new CPDF_CountedPattern(std::move(pPattern));
|
| + m_PatternMap[pPatternObj] = ptData;
|
| }
|
| return ptData->AddRef();
|
| }
|
| @@ -401,8 +404,8 @@ CPDF_Image* CPDF_DocPageData::GetImage(uint32_t dwStreamObjNum) {
|
| if (it != m_ImageMap.end())
|
| return it->second->AddRef();
|
|
|
| - CPDF_CountedImage* pCountedImage =
|
| - new CPDF_CountedImage(new CPDF_Image(m_pPDFDoc, dwStreamObjNum));
|
| + CPDF_CountedImage* pCountedImage = new CPDF_CountedImage(
|
| + pdfium::MakeUnique<CPDF_Image>(m_pPDFDoc, dwStreamObjNum));
|
| m_ImageMap[dwStreamObjNum] = pCountedImage;
|
| return pCountedImage->AddRef();
|
| }
|
| @@ -447,9 +450,8 @@ CPDF_IccProfile* CPDF_DocPageData::GetIccProfile(
|
| if (it_copied_stream != m_IccProfileMap.end())
|
| return it_copied_stream->second->AddRef();
|
| }
|
| - CPDF_IccProfile* pProfile =
|
| - new CPDF_IccProfile(stream.GetData(), stream.GetSize());
|
| - CPDF_CountedIccProfile* ipData = new CPDF_CountedIccProfile(pProfile);
|
| + CPDF_CountedIccProfile* ipData = new CPDF_CountedIccProfile(
|
| + pdfium::MakeUnique<CPDF_IccProfile>(stream.GetData(), stream.GetSize()));
|
| m_IccProfileMap[pIccProfileStream] = ipData;
|
| m_HashProfileMap[bsDigest] = pIccProfileStream;
|
| return ipData->AddRef();
|
| @@ -488,10 +490,11 @@ CPDF_StreamAcc* CPDF_DocPageData::GetFontFileStreamAcc(
|
| pFontDict->GetIntegerFor("Length3");
|
| org_size = std::max(org_size, 0);
|
|
|
| - CPDF_StreamAcc* pFontFile = new CPDF_StreamAcc;
|
| - pFontFile->LoadAllData(pFontStream, false, org_size);
|
| + auto pFontAcc = pdfium::MakeUnique<CPDF_StreamAcc>();
|
| + pFontAcc->LoadAllData(pFontStream, false, org_size);
|
|
|
| - CPDF_CountedStreamAcc* pCountedFont = new CPDF_CountedStreamAcc(pFontFile);
|
| + CPDF_CountedStreamAcc* pCountedFont =
|
| + new CPDF_CountedStreamAcc(std::move(pFontAcc));
|
| m_FontFileMap[pFontStream] = pCountedFont;
|
| return pCountedFont->AddRef();
|
| }
|
|
|