summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fpdfapi/parser/cpdf_parser_unittest.cpp14
-rw-r--r--core/fpdfdoc/cpdf_bookmark.cpp5
-rw-r--r--core/fpdfdoc/cpdf_filespec.cpp7
-rw-r--r--core/fpdfdoc/cpdf_filespec.h6
-rw-r--r--core/fpdfdoc/cpdf_interform.cpp10
-rw-r--r--core/fxcodec/codec/fx_codec.cpp15
-rw-r--r--core/fxcrt/fx_bidi.cpp6
-rw-r--r--core/fxcrt/fx_stream.cpp4
-rw-r--r--core/fxcrt/fxcrt_posix.cpp7
-rw-r--r--core/fxcrt/fxcrt_windows.cpp7
-rw-r--r--core/fxcrt/ifxcrt_fileaccess.h2
11 files changed, 44 insertions, 39 deletions
diff --git a/core/fpdfapi/parser/cpdf_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
index bbf707a34d..f988f8248b 100644
--- a/core/fpdfapi/parser/cpdf_parser_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
@@ -16,12 +16,8 @@
// Provide a way to read test data from a buffer instead of a file.
class CFX_TestBufferRead : public IFX_SeekableReadStream {
public:
- static CFX_RetainPtr<CFX_TestBufferRead> Create(
- const unsigned char* buffer_in,
- size_t buf_size) {
- return CFX_RetainPtr<CFX_TestBufferRead>(
- new CFX_TestBufferRead(buffer_in, buf_size));
- }
+ template <typename T, typename... Args>
+ friend CFX_RetainPtr<T> pdfium::MakeRetain(Args&&... args);
// IFX_SeekableReadStream:
bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
@@ -62,11 +58,9 @@ class CPDF_TestParser : public CPDF_Parser {
// Setup reading from a buffer and initial states.
bool InitTestFromBuffer(const unsigned char* buffer, size_t len) {
- CFX_RetainPtr<CFX_TestBufferRead> buffer_reader =
- CFX_TestBufferRead::Create(buffer, len);
-
// For the test file, the header is set at the beginning.
- m_pSyntax->InitParser(buffer_reader, 0);
+ m_pSyntax->InitParser(pdfium::MakeRetain<CFX_TestBufferRead>(buffer, len),
+ 0);
return true;
}
diff --git a/core/fpdfdoc/cpdf_bookmark.cpp b/core/fpdfdoc/cpdf_bookmark.cpp
index ba1e18c46d..8ca5d128f5 100644
--- a/core/fpdfdoc/cpdf_bookmark.cpp
+++ b/core/fpdfdoc/cpdf_bookmark.cpp
@@ -7,6 +7,7 @@
#include "core/fpdfdoc/cpdf_bookmark.h"
#include <memory>
+#include <vector>
#include "core/fpdfapi/parser/cpdf_array.h"
#include "core/fpdfapi/parser/cpdf_string.h"
@@ -44,12 +45,12 @@ CFX_WideString CPDF_Bookmark::GetTitle() const {
if (!len)
return CFX_WideString();
- std::unique_ptr<wchar_t[]> buf(new wchar_t[len]);
+ std::vector<wchar_t> buf(len);
for (int i = 0; i < len; i++) {
wchar_t w = title[i];
buf[i] = w > 0x20 ? w : 0x20;
}
- return CFX_WideString(buf.get(), len);
+ return CFX_WideString(buf.data(), len);
}
CPDF_Dest CPDF_Bookmark::GetDest(CPDF_Document* pDocument) const {
diff --git a/core/fpdfdoc/cpdf_filespec.cpp b/core/fpdfdoc/cpdf_filespec.cpp
index 086515b9a8..7fe8ec8c03 100644
--- a/core/fpdfdoc/cpdf_filespec.cpp
+++ b/core/fpdfdoc/cpdf_filespec.cpp
@@ -112,10 +112,9 @@ bool CPDF_FileSpec::GetFileName(CFX_WideString* csFileName) const {
return true;
}
-CPDF_FileSpec::CPDF_FileSpec(const CFX_WeakPtr<CFX_ByteStringPool>& pPool) {
- m_pObj = new CPDF_Dictionary(pPool);
- m_pObj->AsDictionary()->SetNewFor<CPDF_Name>("Type", "Filespec");
-}
+CPDF_FileSpec::CPDF_FileSpec(CPDF_Object* pObj) : m_pObj(pObj) {}
+
+CPDF_FileSpec::~CPDF_FileSpec() {}
CFX_WideString CPDF_FileSpec::EncodeFileName(const CFX_WideStringC& filepath) {
if (filepath.GetLength() <= 1)
diff --git a/core/fpdfdoc/cpdf_filespec.h b/core/fpdfdoc/cpdf_filespec.h
index 6266c37a47..ea002f0e22 100644
--- a/core/fpdfdoc/cpdf_filespec.h
+++ b/core/fpdfdoc/cpdf_filespec.h
@@ -15,8 +15,8 @@ class CPDF_Object;
class CPDF_FileSpec {
public:
- explicit CPDF_FileSpec(const CFX_WeakPtr<CFX_ByteStringPool>& pPool);
- explicit CPDF_FileSpec(CPDF_Object* pObj) : m_pObj(pObj) {}
+ explicit CPDF_FileSpec(CPDF_Object* pObj);
+ ~CPDF_FileSpec();
// Convert a platform dependent file name into pdf format.
static CFX_WideString EncodeFileName(const CFX_WideStringC& filepath);
@@ -31,7 +31,7 @@ class CPDF_FileSpec {
void SetFileName(const CFX_WideStringC& wsFileName);
private:
- CPDF_Object* m_pObj;
+ CPDF_Object* const m_pObj; // not owned.
};
#endif // CORE_FPDFDOC_CPDF_FILESPEC_H_
diff --git a/core/fpdfdoc/cpdf_interform.cpp b/core/fpdfdoc/cpdf_interform.cpp
index dad25aa037..f498617b27 100644
--- a/core/fpdfdoc/cpdf_interform.cpp
+++ b/core/fpdfdoc/cpdf_interform.cpp
@@ -23,6 +23,7 @@
#include "core/fxcrt/fx_codepage.h"
#include "core/fxge/cfx_substfont.h"
#include "core/fxge/fx_font.h"
+#include "third_party/base/ptr_util.h"
#include "third_party/base/stl_util.h"
namespace {
@@ -633,7 +634,7 @@ uint8_t CPDF_InterForm::GetNativeCharSet() {
CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument)
: m_pDocument(pDocument),
m_pFormDict(nullptr),
- m_pFieldTree(new CFieldTree),
+ m_pFieldTree(pdfium::MakeUnique<CFieldTree>()),
m_pFormNotify(nullptr) {
CPDF_Dictionary* pRoot = m_pDocument->GetRoot();
if (!pRoot)
@@ -1198,9 +1199,12 @@ std::unique_ptr<CFDF_Document> CPDF_InterForm::ExportToFDF(
pMainDict->SetNewFor<CPDF_String>("UF", PDF_EncodeText(wsFilePath),
false);
} else {
- CPDF_FileSpec filespec(pDoc->GetByteStringPool());
+ auto pNewDict =
+ pdfium::MakeUnique<CPDF_Dictionary>(pDoc->GetByteStringPool());
+ pNewDict->SetNewFor<CPDF_Name>("Type", "Filespec");
+ CPDF_FileSpec filespec(pNewDict.get());
filespec.SetFileName(pdf_path);
- pMainDict->SetFor("F", pdfium::WrapUnique(filespec.GetObj()));
+ pMainDict->SetFor("F", std::move(pNewDict));
}
}
diff --git a/core/fxcodec/codec/fx_codec.cpp b/core/fxcodec/codec/fx_codec.cpp
index c47231c9af..38f5a7608d 100644
--- a/core/fxcodec/codec/fx_codec.cpp
+++ b/core/fxcodec/codec/fx_codec.cpp
@@ -18,14 +18,13 @@
#include "third_party/base/ptr_util.h"
CCodec_ModuleMgr::CCodec_ModuleMgr()
- : m_pBasicModule(new CCodec_BasicModule),
- m_pFaxModule(new CCodec_FaxModule),
- m_pJpegModule(new CCodec_JpegModule),
- m_pJpxModule(new CCodec_JpxModule),
- m_pJbig2Module(new CCodec_Jbig2Module),
- m_pIccModule(new CCodec_IccModule),
- m_pFlateModule(new CCodec_FlateModule) {
-}
+ : m_pBasicModule(pdfium::MakeUnique<CCodec_BasicModule>()),
+ m_pFaxModule(pdfium::MakeUnique<CCodec_FaxModule>()),
+ m_pJpegModule(pdfium::MakeUnique<CCodec_JpegModule>()),
+ m_pJpxModule(pdfium::MakeUnique<CCodec_JpxModule>()),
+ m_pJbig2Module(pdfium::MakeUnique<CCodec_Jbig2Module>()),
+ m_pIccModule(pdfium::MakeUnique<CCodec_IccModule>()),
+ m_pFlateModule(pdfium::MakeUnique<CCodec_FlateModule>()) {}
CCodec_ModuleMgr::~CCodec_ModuleMgr() {}
diff --git a/core/fxcrt/fx_bidi.cpp b/core/fxcrt/fx_bidi.cpp
index 49333f6a76..25544546d3 100644
--- a/core/fxcrt/fx_bidi.cpp
+++ b/core/fxcrt/fx_bidi.cpp
@@ -5,10 +5,12 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#include "core/fxcrt/fx_bidi.h"
-#include "core/fxcrt/fx_ucd.h"
#include <algorithm>
+#include "core/fxcrt/fx_ucd.h"
+#include "third_party/base/ptr_util.h"
+
CFX_BidiChar::CFX_BidiChar()
: m_CurrentSegment({0, 0, NEUTRAL}), m_LastSegment({0, 0, NEUTRAL}) {}
@@ -50,7 +52,7 @@ void CFX_BidiChar::StartNewSegment(CFX_BidiChar::Direction direction) {
CFX_BidiString::CFX_BidiString(const CFX_WideString& str)
: m_Str(str),
- m_pBidiChar(new CFX_BidiChar),
+ m_pBidiChar(pdfium::MakeUnique<CFX_BidiChar>()),
m_eOverallDirection(CFX_BidiChar::LEFT) {
for (const auto& c : m_Str) {
if (m_pBidiChar->AppendChar(c))
diff --git a/core/fxcrt/fx_stream.cpp b/core/fxcrt/fx_stream.cpp
index 2c451c67b8..32b6ca3495 100644
--- a/core/fxcrt/fx_stream.cpp
+++ b/core/fxcrt/fx_stream.cpp
@@ -52,7 +52,7 @@ class CFX_CRTFileStream final : public IFX_SeekableStream {
CFX_RetainPtr<IFX_SeekableStream> IFX_SeekableStream::CreateFromFilename(
const char* filename,
uint32_t dwModes) {
- std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create());
+ std::unique_ptr<IFXCRT_FileAccess> pFA = IFXCRT_FileAccess::Create();
if (!pFA->Open(filename, dwModes))
return nullptr;
return pdfium::MakeRetain<CFX_CRTFileStream>(std::move(pFA));
@@ -62,7 +62,7 @@ CFX_RetainPtr<IFX_SeekableStream> IFX_SeekableStream::CreateFromFilename(
CFX_RetainPtr<IFX_SeekableStream> IFX_SeekableStream::CreateFromFilename(
const wchar_t* filename,
uint32_t dwModes) {
- std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create());
+ std::unique_ptr<IFXCRT_FileAccess> pFA = IFXCRT_FileAccess::Create();
if (!pFA->Open(filename, dwModes))
return nullptr;
return pdfium::MakeRetain<CFX_CRTFileStream>(std::move(pFA));
diff --git a/core/fxcrt/fxcrt_posix.cpp b/core/fxcrt/fxcrt_posix.cpp
index 562c70c23e..3afe2c32d5 100644
--- a/core/fxcrt/fxcrt_posix.cpp
+++ b/core/fxcrt/fxcrt_posix.cpp
@@ -6,15 +6,18 @@
#include "core/fxcrt/fxcrt_posix.h"
+#include <memory>
+
#include "core/fxcrt/fx_basic.h"
+#include "third_party/base/ptr_util.h"
#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \
_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \
_FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_
// static
-IFXCRT_FileAccess* IFXCRT_FileAccess::Create() {
- return new CFXCRT_FileAccess_Posix;
+std::unique_ptr<IFXCRT_FileAccess> IFXCRT_FileAccess::Create() {
+ return pdfium::MakeUnique<CFXCRT_FileAccess_Posix>();
}
void FXCRT_Posix_GetFileMode(uint32_t dwModes,
diff --git a/core/fxcrt/fxcrt_windows.cpp b/core/fxcrt/fxcrt_windows.cpp
index 638338706e..6230c74eb7 100644
--- a/core/fxcrt/fxcrt_windows.cpp
+++ b/core/fxcrt/fxcrt_windows.cpp
@@ -6,13 +6,16 @@
#include "core/fxcrt/fxcrt_windows.h"
+#include <memory>
+
#include "core/fxcrt/fx_string.h"
+#include "third_party/base/ptr_util.h"
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
// static
-IFXCRT_FileAccess* IFXCRT_FileAccess::Create() {
- return new CFXCRT_FileAccess_Win64;
+std::unique_ptr<IFXCRT_FileAccess> IFXCRT_FileAccess::Create() {
+ return pdfium::MakeUnique<CFXCRT_FileAccess_Win64>();
}
void FXCRT_Windows_GetFileMode(uint32_t dwMode,
diff --git a/core/fxcrt/ifxcrt_fileaccess.h b/core/fxcrt/ifxcrt_fileaccess.h
index 9528b3b377..340c2d1eeb 100644
--- a/core/fxcrt/ifxcrt_fileaccess.h
+++ b/core/fxcrt/ifxcrt_fileaccess.h
@@ -15,7 +15,7 @@
class IFXCRT_FileAccess {
public:
- static IFXCRT_FileAccess* Create();
+ static std::unique_ptr<IFXCRT_FileAccess> Create();
virtual ~IFXCRT_FileAccess() {}
virtual bool Open(const CFX_ByteStringC& fileName, uint32_t dwMode) = 0;