diff options
author | tsepez <tsepez@chromium.org> | 2017-01-11 09:32:33 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2017-01-11 09:32:33 -0800 |
commit | 8fa82794ffc2763e9fa1fc9d401c8e9a14d7c67f (patch) | |
tree | 724f69ba295176752df1040e4fb770f69c8dda93 /fpdfsdk/cpdfsdk_interform.cpp | |
parent | 76a44dea318041f8229d80e70ca3568a435611eb (diff) | |
download | pdfium-8fa82794ffc2763e9fa1fc9d401c8e9a14d7c67f.tar.xz |
Annotation deleted while retrieving it in JS
Widgets as returned from GetWidgets() can pop out of existence
unexpectedly, so always return observed pointers. This extends
the same pattern used elsewhere in the file to all occurrences.
BUG=679642
Review-Url: https://codereview.chromium.org/2624933002
Diffstat (limited to 'fpdfsdk/cpdfsdk_interform.cpp')
-rw-r--r-- | fpdfsdk/cpdfsdk_interform.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fpdfsdk/cpdfsdk_interform.cpp b/fpdfsdk/cpdfsdk_interform.cpp index a2f07b488f..7b7718030b 100644 --- a/fpdfsdk/cpdfsdk_interform.cpp +++ b/fpdfsdk/cpdfsdk_interform.cpp @@ -117,7 +117,7 @@ CPDFSDK_Widget* CPDFSDK_InterForm::GetWidget(CPDF_FormControl* pControl) const { void CPDFSDK_InterForm::GetWidgets( const CFX_WideString& sFieldName, - std::vector<CPDFSDK_Widget*>* widgets) const { + std::vector<CPDFSDK_Annot::ObservedPtr>* widgets) const { for (int i = 0, sz = m_pInterForm->CountFields(sFieldName); i < sz; ++i) { CPDF_FormField* pFormField = m_pInterForm->GetField(i, sFieldName); ASSERT(pFormField); @@ -127,13 +127,13 @@ void CPDFSDK_InterForm::GetWidgets( void CPDFSDK_InterForm::GetWidgets( CPDF_FormField* pField, - std::vector<CPDFSDK_Widget*>* widgets) const { + std::vector<CPDFSDK_Annot::ObservedPtr>* widgets) const { for (int i = 0, sz = pField->CountControls(); i < sz; ++i) { CPDF_FormControl* pFormCtrl = pField->GetControl(i); ASSERT(pFormCtrl); CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl); if (pWidget) - widgets->push_back(pWidget); + widgets->emplace_back(pWidget); } } |