diff options
author | tsepez <tsepez@chromium.org> | 2016-11-21 13:19:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-11-21 13:19:10 -0800 |
commit | 9e05ee1e7bfb74d56d69620ad1e72b03e29b9237 (patch) | |
tree | 12b47b617d99edc7bd2715292402b74e864e1fa4 /core/fpdfapi/parser/cpdf_object_unittest.cpp | |
parent | aa3922dd713d480229408f3a0813b7dab9e8fd78 (diff) | |
download | pdfium-9e05ee1e7bfb74d56d69620ad1e72b03e29b9237.tar.xz |
Make CPDF_Stream() take unique_ptr's to its dictionary.
Review-Url: https://codereview.chromium.org/2520493002
Diffstat (limited to 'core/fpdfapi/parser/cpdf_object_unittest.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_object_unittest.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/core/fpdfapi/parser/cpdf_object_unittest.cpp b/core/fpdfapi/parser/cpdf_object_unittest.cpp index 86645934bf..303ad6fa7a 100644 --- a/core/fpdfapi/parser/cpdf_object_unittest.cpp +++ b/core/fpdfapi/parser/cpdf_object_unittest.cpp @@ -71,10 +71,12 @@ class PDFObjectsTest : public testing::Test { size_t buf_len = FX_ArraySize(content); uint8_t* buf = reinterpret_cast<uint8_t*>(malloc(buf_len)); memcpy(buf, content, buf_len); - m_StreamDictObj = new CPDF_Dictionary(); + auto pNewDict = pdfium::MakeUnique<CPDF_Dictionary>(); + m_StreamDictObj = pNewDict.get(); m_StreamDictObj->SetNewFor<CPDF_String>("key1", L" test dict"); m_StreamDictObj->SetNewFor<CPDF_Number>("key2", -1); - CPDF_Stream* stream_obj = new CPDF_Stream(buf, buf_len, m_StreamDictObj); + CPDF_Stream* stream_obj = + new CPDF_Stream(buf, buf_len, std::move(pNewDict)); // Null Object. CPDF_Null* null_obj = new CPDF_Null; // All direct objects. @@ -588,7 +590,8 @@ TEST(PDFArrayTest, GetTypeAt) { size_t data_size = FX_ArraySize(content); uint8_t* data = reinterpret_cast<uint8_t*>(malloc(data_size)); memcpy(data, content, data_size); - stream_vals[i] = arr->AddNew<CPDF_Stream>(data, data_size, vals[i]); + stream_vals[i] = arr->AddNew<CPDF_Stream>(data, data_size, + pdfium::WrapUnique(vals[i])); } for (size_t i = 0; i < 3; ++i) { TestArrayAccessors(arr.get(), i, // Array and index. @@ -633,8 +636,8 @@ TEST(PDFArrayTest, GetTypeAt) { size_t buf_size = sizeof(data); uint8_t* buf = reinterpret_cast<uint8_t*>(malloc(buf_size)); memcpy(buf, data, buf_size); - CPDF_Stream* stream_val = - arr->InsertNewAt<CPDF_Stream>(13, buf, buf_size, stream_dict); + CPDF_Stream* stream_val = arr->InsertNewAt<CPDF_Stream>( + 13, buf, buf_size, pdfium::WrapUnique(stream_dict)); const char* const expected_str[] = { "true", "false", "0", "-1234", "2345", "0.05", "", "It is a test!", "NAME", "test", "", "", "", ""}; @@ -816,10 +819,12 @@ TEST(PDFObjectTest, CloneCheckLoop) { EXPECT_EQ(nullptr, cloned_dict->AsDictionary()->GetObjectFor("arr")); } { - // Create a dictionary/stream pair with a reference loop. + // Create a dictionary/stream pair with a reference loop. It takes + // some work to do this nowadays, in particular we need the + // anti-pattern pdfium::WrapUnique(dict.get()). auto dict_obj = pdfium::MakeUnique<CPDF_Dictionary>(); - CPDF_Stream* stream_obj = - dict_obj->SetNewFor<CPDF_Stream>("stream", nullptr, 0, dict_obj.get()); + CPDF_Stream* stream_obj = dict_obj->SetNewFor<CPDF_Stream>( + "stream", nullptr, 0, pdfium::WrapUnique(dict_obj.get())); // Clone this object to see whether stack overflow will be triggered. std::unique_ptr<CPDF_Stream> cloned_stream = ToStream(stream_obj->Clone()); // Cloned object should be the same as the original. |