summaryrefslogtreecommitdiff
path: root/core/fpdfdoc
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2016-11-04 08:25:34 -0700
committerCommit bot <commit-bot@chromium.org>2016-11-04 08:25:34 -0700
commitf0d5b6c35fa343108a3ab7a25bc2cc2b3cf105b3 (patch)
treeedc3d5f35225971679e581c8ef951de8275a944b /core/fpdfdoc
parent4de3d095c9d9e961f93750cf1ebd489fd515be12 (diff)
downloadpdfium-f0d5b6c35fa343108a3ab7a25bc2cc2b3cf105b3.tar.xz
Revert of Remove CPDF_Object::Release() in favor of direct delete (patchset #11 id:200001 of https://codereview.chromium.org/2384883003/ )
Reason for revert: Looks like it's blocking the roll. https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_compile_dbg_ng/builds/186619 Original issue's description: > Remove CPDF_Object::Release() in favor of direct delete > > Follow-on once we prove Release always deletes in previous CL. > > Committed: https://pdfium.googlesource.com/pdfium/+/4de3d095c9d9e961f93750cf1ebd489fd515be12 TBR=thestig@chromium.org,tsepez@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2478253002
Diffstat (limited to 'core/fpdfdoc')
-rw-r--r--core/fpdfdoc/cpdf_annot.cpp2
-rw-r--r--core/fpdfdoc/cpdf_filespec_unittest.cpp17
-rw-r--r--core/fpdfdoc/cpdf_formfield.cpp3
3 files changed, 15 insertions, 7 deletions
diff --git a/core/fpdfdoc/cpdf_annot.cpp b/core/fpdfdoc/cpdf_annot.cpp
index 2f3fc804f3..80edde8a8f 100644
--- a/core/fpdfdoc/cpdf_annot.cpp
+++ b/core/fpdfdoc/cpdf_annot.cpp
@@ -57,7 +57,7 @@ CPDF_Annot::CPDF_Annot(CPDF_Dictionary* pDict,
CPDF_Annot::~CPDF_Annot() {
if (m_bOwnedAnnotDict)
- delete m_pAnnotDict;
+ m_pAnnotDict->Release();
ClearCachedAP();
}
diff --git a/core/fpdfdoc/cpdf_filespec_unittest.cpp b/core/fpdfdoc/cpdf_filespec_unittest.cpp
index 01989ee0bd..72b073510b 100644
--- a/core/fpdfdoc/cpdf_filespec_unittest.cpp
+++ b/core/fpdfdoc/cpdf_filespec_unittest.cpp
@@ -12,6 +12,13 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/test_support.h"
+namespace {
+
+using ScopedObj = std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>>;
+using ScopedDict =
+ std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>>;
+}
+
TEST(cpdf_filespec, EncodeDecodeFileName) {
std::vector<pdfium::NullTermWstrFuncTestData> test_data = {
// Empty src string.
@@ -67,7 +74,7 @@ TEST(cpdf_filespec, GetFileName) {
L"/docs/test.pdf"
#endif
};
- std::unique_ptr<CPDF_Object> str_obj(new CPDF_String(test_data.input));
+ ScopedObj str_obj(new CPDF_String(test_data.input));
CPDF_FileSpec file_spec(str_obj.get());
CFX_WideString file_name;
EXPECT_TRUE(file_spec.GetFileName(&file_name));
@@ -98,7 +105,7 @@ TEST(cpdf_filespec, GetFileName) {
};
// Keyword fields in reverse order of precedence to retrieve the file name.
const char* const keywords[5] = {"Unix", "Mac", "DOS", "F", "UF"};
- std::unique_ptr<CPDF_Dictionary> dict_obj(new CPDF_Dictionary());
+ ScopedDict dict_obj(new CPDF_Dictionary());
CPDF_FileSpec file_spec(dict_obj.get());
CFX_WideString file_name;
for (int i = 0; i < 5; ++i) {
@@ -115,7 +122,7 @@ TEST(cpdf_filespec, GetFileName) {
}
{
// Invalid object.
- std::unique_ptr<CPDF_Object> name_obj(new CPDF_Name("test.pdf"));
+ ScopedObj name_obj(new CPDF_Name("test.pdf"));
CPDF_FileSpec file_spec(name_obj.get());
CFX_WideString file_name;
EXPECT_FALSE(file_spec.GetFileName(&file_name));
@@ -136,7 +143,7 @@ TEST(cpdf_filespec, SetFileName) {
#endif
};
// String object.
- std::unique_ptr<CPDF_Object> str_obj(new CPDF_String(L"babababa"));
+ ScopedObj str_obj(new CPDF_String(L"babababa"));
CPDF_FileSpec file_spec1(str_obj.get());
file_spec1.SetFileName(test_data.input);
// Check internal object value.
@@ -148,7 +155,7 @@ TEST(cpdf_filespec, SetFileName) {
EXPECT_TRUE(file_name == test_data.input);
// Dictionary object.
- std::unique_ptr<CPDF_Dictionary> dict_obj(new CPDF_Dictionary());
+ ScopedDict dict_obj(new CPDF_Dictionary());
CPDF_FileSpec file_spec2(dict_obj.get());
file_spec2.SetFileName(test_data.input);
// Check internal object value.
diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp
index e2240c9f2f..e82ef7800e 100644
--- a/core/fpdfdoc/cpdf_formfield.cpp
+++ b/core/fpdfdoc/cpdf_formfield.cpp
@@ -575,7 +575,8 @@ bool CPDF_FormField::SetItemSelection(int index, bool bSelected, bool bNotify) {
if (pValue->GetUnicodeText() == opt_value)
m_pDict->RemoveFor("V");
} else if (pValue->IsArray()) {
- std::unique_ptr<CPDF_Array> pArray(new CPDF_Array);
+ std::unique_ptr<CPDF_Array, ReleaseDeleter<CPDF_Array>> pArray(
+ new CPDF_Array);
for (int i = 0; i < CountOptions(); i++) {
if (i != index && IsItemSelected(i)) {
opt_value = GetOptionValue(i);