| Index: fpdfsdk/cpdfsdk_formfillenvironment.cpp
|
| diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.cpp b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
|
| index 9852bdc9b9cea9c62b094d28aacda25fc51f12f6..8ab3b46a916971d040b727c9f1f749e6129f3adc 100644
|
| --- a/fpdfsdk/cpdfsdk_formfillenvironment.cpp
|
| +++ b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
|
| @@ -41,12 +41,14 @@ CPDFSDK_FormFillEnvironment::CPDFSDK_FormFillEnvironment(
|
|
|
| CPDFSDK_FormFillEnvironment::~CPDFSDK_FormFillEnvironment() {
|
| m_bBeingDestroyed = true;
|
| -
|
| ClearAllFocusedAnnots();
|
|
|
| - // |m_pAnnotHandlerMgr| will try to access |m_pFormFiller|
|
| - // when it cleans up. So, we must make sure it is cleaned up before
|
| - // |m_pFormFiller|.
|
| + // |m_PageMap| will try to access |m_pInterForm| when it cleans itself up.
|
| + // Make sure it is deleted before |m_pInterForm|.
|
| + m_PageMap.clear();
|
| +
|
| + // |m_pAnnotHandlerMgr| will try to access |m_pFormFiller| when it cleans
|
| + // itself up. Make sure it is deleted before |m_pFormFiller|.
|
| m_pAnnotHandlerMgr.reset();
|
|
|
| // Must destroy the |m_pFormFiller| before the environment (|this|)
|
| @@ -563,7 +565,7 @@ void CPDFSDK_FormFillEnvironment::PageEvent(int iPageCount,
|
| #endif // PDF_ENABLE_XFA
|
|
|
| void CPDFSDK_FormFillEnvironment::ClearAllFocusedAnnots() {
|
| - for (auto& it : m_pageMap) {
|
| + for (auto& it : m_PageMap) {
|
| if (it.second->IsValidSDKAnnot(GetFocusAnnot()))
|
| KillFocusAnnot(0);
|
| }
|
| @@ -572,15 +574,15 @@ void CPDFSDK_FormFillEnvironment::ClearAllFocusedAnnots() {
|
| CPDFSDK_PageView* CPDFSDK_FormFillEnvironment::GetPageView(
|
| UnderlyingPageType* pUnderlyingPage,
|
| bool renew) {
|
| - auto it = m_pageMap.find(pUnderlyingPage);
|
| - if (it != m_pageMap.end())
|
| + auto it = m_PageMap.find(pUnderlyingPage);
|
| + if (it != m_PageMap.end())
|
| return it->second.get();
|
|
|
| if (!renew)
|
| return nullptr;
|
|
|
| CPDFSDK_PageView* pPageView = new CPDFSDK_PageView(this, pUnderlyingPage);
|
| - m_pageMap[pUnderlyingPage].reset(pPageView);
|
| + m_PageMap[pUnderlyingPage].reset(pPageView);
|
| // Delay to load all the annotations, to avoid endless loop.
|
| pPageView->LoadFXAnnots();
|
| return pPageView;
|
| @@ -598,8 +600,8 @@ CPDFSDK_PageView* CPDFSDK_FormFillEnvironment::GetPageView(int nIndex) {
|
| if (!pTempPage)
|
| return nullptr;
|
|
|
| - auto it = m_pageMap.find(pTempPage);
|
| - return it != m_pageMap.end() ? it->second.get() : nullptr;
|
| + auto it = m_PageMap.find(pTempPage);
|
| + return it != m_PageMap.end() ? it->second.get() : nullptr;
|
| }
|
|
|
| void CPDFSDK_FormFillEnvironment::ProcJavascriptFun() {
|
| @@ -647,8 +649,8 @@ bool CPDFSDK_FormFillEnvironment::ProcOpenAction() {
|
|
|
| void CPDFSDK_FormFillEnvironment::RemovePageView(
|
| UnderlyingPageType* pUnderlyingPage) {
|
| - auto it = m_pageMap.find(pUnderlyingPage);
|
| - if (it == m_pageMap.end())
|
| + auto it = m_PageMap.find(pUnderlyingPage);
|
| + if (it == m_PageMap.end())
|
| return;
|
|
|
| CPDFSDK_PageView* pPageView = it->second.get();
|
| @@ -669,7 +671,7 @@ void CPDFSDK_FormFillEnvironment::RemovePageView(
|
|
|
| // Remove the page from the map to make sure we don't accidentally attempt
|
| // to use the |pPageView| while we're cleaning it up.
|
| - m_pageMap.erase(it);
|
| + m_PageMap.erase(it);
|
| }
|
|
|
| UnderlyingPageType* CPDFSDK_FormFillEnvironment::GetPage(int nIndex) {
|
| @@ -684,7 +686,7 @@ CPDFSDK_InterForm* CPDFSDK_FormFillEnvironment::GetInterForm() {
|
|
|
| void CPDFSDK_FormFillEnvironment::UpdateAllViews(CPDFSDK_PageView* pSender,
|
| CPDFSDK_Annot* pAnnot) {
|
| - for (const auto& it : m_pageMap) {
|
| + for (const auto& it : m_PageMap) {
|
| CPDFSDK_PageView* pPageView = it.second.get();
|
| if (pPageView != pSender)
|
| pPageView->UpdateView(pAnnot);
|
|
|