diff options
author | dsinclair <dsinclair@chromium.org> | 2016-11-04 08:25:34 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-11-04 08:25:34 -0700 |
commit | f0d5b6c35fa343108a3ab7a25bc2cc2b3cf105b3 (patch) | |
tree | edc3d5f35225971679e581c8ef951de8275a944b /core/fpdfdoc | |
parent | 4de3d095c9d9e961f93750cf1ebd489fd515be12 (diff) | |
download | pdfium-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.cpp | 2 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_filespec_unittest.cpp | 17 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_formfield.cpp | 3 |
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); |