Use vector<UnownedPtr<>> in CPDFSK_AnnotIterator. Still some raw pointers lurking. Change-Id: I847f33cb3d21cef7a6ff4e417745b43d73ec8977 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/78952 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/cpdfsdk_annotiterator.cpp b/fpdfsdk/cpdfsdk_annotiterator.cpp index 5827a42..b93749c 100644 --- a/fpdfsdk/cpdfsdk_annotiterator.cpp +++ b/fpdfsdk/cpdfsdk_annotiterator.cpp
@@ -82,29 +82,31 @@ return *(--iter); } -void CPDFSDK_AnnotIterator::CollectAnnots(std::vector<CPDFSDK_Annot*>* pArray) { +void CPDFSDK_AnnotIterator::CollectAnnots( + std::vector<UnownedPtr<CPDFSDK_Annot>>* pArray) { for (auto* pAnnot : m_pPageView->GetAnnotList()) { if (pdfium::Contains(m_subtypes, pAnnot->GetAnnotSubtype()) && !pAnnot->IsSignatureWidget()) { - pArray->push_back(pAnnot); + pArray->emplace_back(pAnnot); } } } CFX_FloatRect CPDFSDK_AnnotIterator::AddToAnnotsList( - std::vector<CPDFSDK_Annot*>* sa, + std::vector<UnownedPtr<CPDFSDK_Annot>>* sa, size_t idx) { CPDFSDK_Annot* pLeftTopAnnot = sa->at(idx); CFX_FloatRect rcLeftTop = GetAnnotRect(pLeftTopAnnot); - m_Annots.push_back(pLeftTopAnnot); + m_Annots.emplace_back(pLeftTopAnnot); sa->erase(sa->begin() + idx); return rcLeftTop; } -void CPDFSDK_AnnotIterator::AddSelectedToAnnots(std::vector<CPDFSDK_Annot*>* sa, - std::vector<size_t>* aSelect) { +void CPDFSDK_AnnotIterator::AddSelectedToAnnots( + std::vector<UnownedPtr<CPDFSDK_Annot>>* sa, + std::vector<size_t>* aSelect) { for (size_t i = 0; i < aSelect->size(); ++i) - m_Annots.push_back(sa->at(aSelect->at(i))); + m_Annots.emplace_back(sa->at(aSelect->at(i))); for (int i = aSelect->size() - 1; i >= 0; --i) sa->erase(sa->begin() + aSelect->at(i)); @@ -117,7 +119,7 @@ break; case ROW: { - std::vector<CPDFSDK_Annot*> sa; + std::vector<UnownedPtr<CPDFSDK_Annot>> sa; CollectAnnots(&sa); std::sort(sa.begin(), sa.end(), CompareByLeftAscending); @@ -149,7 +151,7 @@ } case COLUMN: { - std::vector<CPDFSDK_Annot*> sa; + std::vector<UnownedPtr<CPDFSDK_Annot>> sa; CollectAnnots(&sa); std::sort(sa.begin(), sa.end(), CompareByTopDescending);
diff --git a/fpdfsdk/cpdfsdk_annotiterator.h b/fpdfsdk/cpdfsdk_annotiterator.h index 7a4afff..a9c9212 100644 --- a/fpdfsdk/cpdfsdk_annotiterator.h +++ b/fpdfsdk/cpdfsdk_annotiterator.h
@@ -36,15 +36,16 @@ private: void GenerateResults(); - void CollectAnnots(std::vector<CPDFSDK_Annot*>* pArray); - CFX_FloatRect AddToAnnotsList(std::vector<CPDFSDK_Annot*>* sa, size_t idx); - void AddSelectedToAnnots(std::vector<CPDFSDK_Annot*>* sa, + void CollectAnnots(std::vector<UnownedPtr<CPDFSDK_Annot>>* pArray); + CFX_FloatRect AddToAnnotsList(std::vector<UnownedPtr<CPDFSDK_Annot>>* sa, + size_t idx); + void AddSelectedToAnnots(std::vector<UnownedPtr<CPDFSDK_Annot>>* sa, std::vector<size_t>* aSelect); UnownedPtr<CPDFSDK_PageView> const m_pPageView; const std::vector<CPDF_Annot::Subtype> m_subtypes; const TabOrder m_eTabOrder; - std::vector<CPDFSDK_Annot*> m_Annots; + std::vector<UnownedPtr<CPDFSDK_Annot>> m_Annots; }; #endif // FPDFSDK_CPDFSDK_ANNOTITERATOR_H_