| Index: core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
|
| diff --git a/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp b/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
|
| index e6a522726942b9c9a29852f03c8bd40597d91396..9c84b4ae28fbb77d114785afa16f2f3211171549 100644
|
| --- a/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
|
| +++ b/core/fpdfapi/fpdf_page/cpdf_clippathdata.cpp
|
| @@ -9,69 +9,16 @@
|
| #include "core/fpdfapi/fpdf_page/include/cpdf_path.h"
|
| #include "core/fpdfapi/fpdf_page/include/cpdf_textobject.h"
|
|
|
| -CPDF_ClipPathData::CPDF_ClipPathData()
|
| - : m_PathCount(0),
|
| - m_pPathList(nullptr),
|
| - m_pTypeList(nullptr),
|
| - m_TextCount(0),
|
| - m_pTextList(nullptr) {}
|
| +CPDF_ClipPathData::CPDF_ClipPathData() {}
|
|
|
| -CPDF_ClipPathData::~CPDF_ClipPathData() {
|
| - delete[] m_pPathList;
|
| - FX_Free(m_pTypeList);
|
| -
|
| - for (int i = m_TextCount - 1; i > -1; i--)
|
| - delete m_pTextList[i];
|
| - FX_Free(m_pTextList);
|
| -}
|
| +CPDF_ClipPathData::~CPDF_ClipPathData() {}
|
|
|
| CPDF_ClipPathData::CPDF_ClipPathData(const CPDF_ClipPathData& src) {
|
| - m_pPathList = nullptr;
|
| - m_pPathList = nullptr;
|
| - m_pTextList = nullptr;
|
| -
|
| - m_PathCount = src.m_PathCount;
|
| - if (m_PathCount) {
|
| - int alloc_size = m_PathCount;
|
| - if (alloc_size % 8)
|
| - alloc_size += 8 - (alloc_size % 8);
|
| -
|
| - m_pPathList = new CPDF_Path[alloc_size];
|
| - for (int i = 0; i < m_PathCount; i++)
|
| - m_pPathList[i] = src.m_pPathList[i];
|
| -
|
| - m_pTypeList = FX_Alloc(uint8_t, alloc_size);
|
| - FXSYS_memcpy(m_pTypeList, src.m_pTypeList, m_PathCount);
|
| - } else {
|
| - m_pPathList = nullptr;
|
| - m_pTypeList = nullptr;
|
| - }
|
| -
|
| - m_TextCount = src.m_TextCount;
|
| - if (m_TextCount) {
|
| - m_pTextList = FX_Alloc(CPDF_TextObject*, m_TextCount);
|
| - for (int i = 0; i < m_TextCount; i++) {
|
| - if (src.m_pTextList[i])
|
| - m_pTextList[i] = src.m_pTextList[i]->Clone();
|
| - else
|
| - m_pTextList[i] = nullptr;
|
| - }
|
| - } else {
|
| - m_pTextList = nullptr;
|
| - }
|
| -}
|
| -
|
| -void CPDF_ClipPathData::SetCount(int path_count, int text_count) {
|
| - ASSERT(m_TextCount == 0 && m_PathCount == 0);
|
| - if (path_count) {
|
| - m_PathCount = path_count;
|
| - int alloc_size = (path_count + 7) / 8 * 8;
|
| - m_pPathList = new CPDF_Path[alloc_size];
|
| - m_pTypeList = FX_Alloc(uint8_t, alloc_size);
|
| - }
|
| + m_PathAndTypeList = src.m_PathAndTypeList;
|
|
|
| - if (text_count) {
|
| - m_TextCount = text_count;
|
| - m_pTextList = FX_Alloc(CPDF_TextObject*, text_count);
|
| + m_TextList.resize(src.m_TextList.size());
|
| + for (size_t i = 0; i < src.m_TextList.size(); ++i) {
|
| + if (src.m_TextList[i])
|
| + m_TextList[i].reset(src.m_TextList[i]->Clone());
|
| }
|
| }
|
|
|