Chromium Code Reviews| Index: core/fpdfdoc/cpdf_interform.cpp |
| diff --git a/core/fpdfdoc/cpdf_interform.cpp b/core/fpdfdoc/cpdf_interform.cpp |
| index e574e28fe5a67e5129ac8cfa2866e32a0418eaba..6cffea62222a573244603f3aec164d1465f7c7ce 100644 |
| --- a/core/fpdfdoc/cpdf_interform.cpp |
| +++ b/core/fpdfdoc/cpdf_interform.cpp |
| @@ -669,9 +669,7 @@ CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument) |
| } |
| CPDF_InterForm::~CPDF_InterForm() { |
| - for (auto it : m_ControlMap) |
| - delete it.second; |
| - |
| + m_ControlMap.clear(); |
|
Tom Sepez
2017/01/09 18:37:07
Note: Just to keep deletion order for now.
|
| size_t nCount = m_pFieldTree->m_Root.CountFields(); |
| for (size_t i = 0; i < nCount; ++i) |
| delete m_pFieldTree->m_Root.GetFieldAtIndex(i); |
| @@ -919,7 +917,7 @@ CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage, |
| if (it == m_ControlMap.end()) |
| continue; |
| - CPDF_FormControl* pControl = it->second; |
| + CPDF_FormControl* pControl = it->second.get(); |
| CFX_FloatRect rect = pControl->GetRect(); |
| if (!rect.Contains(pdf_x, pdf_y)) |
| continue; |
| @@ -934,7 +932,7 @@ CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage, |
| CPDF_FormControl* CPDF_InterForm::GetControlByDict( |
| const CPDF_Dictionary* pWidgetDict) const { |
| const auto it = m_ControlMap.find(pWidgetDict); |
| - return it != m_ControlMap.end() ? it->second : nullptr; |
| + return it != m_ControlMap.end() ? it->second.get() : nullptr; |
| } |
| bool CPDF_InterForm::NeedConstructAP() const { |
| @@ -1150,11 +1148,12 @@ CPDF_FormControl* CPDF_InterForm::AddControl(CPDF_FormField* pField, |
| CPDF_Dictionary* pWidgetDict) { |
| const auto it = m_ControlMap.find(pWidgetDict); |
| if (it != m_ControlMap.end()) |
| - return it->second; |
| + return it->second.get(); |
| - CPDF_FormControl* pControl = new CPDF_FormControl(pField, pWidgetDict); |
| - m_ControlMap[pWidgetDict] = pControl; |
| - pField->m_ControlList.Add(pControl); |
| + auto pNew = pdfium::MakeUnique<CPDF_FormControl>(pField, pWidgetDict); |
| + CPDF_FormControl* pControl = pNew.get(); |
| + m_ControlMap[pWidgetDict] = std::move(pNew); |
| + pField->m_ControlList.push_back(pControl); |
| return pControl; |
| } |