Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: fpdfsdk/cpdfsdk_formfillenvironment.cpp

Issue 2408163003: Fixup formfiller cleanup (Closed)
Patch Set: Make sure annotation handler manager is destroyed at the right time. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: fpdfsdk/cpdfsdk_formfillenvironment.cpp
diff --git a/fpdfsdk/cpdfsdk_formfillenvironment.cpp b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
index 5b05d0812867168ed3b9eed089c64adec1431696..6ea33c00a1cf66d6eb6590a2cdda4d3a05a1bb30 100644
--- a/fpdfsdk/cpdfsdk_formfillenvironment.cpp
+++ b/fpdfsdk/cpdfsdk_formfillenvironment.cpp
@@ -39,6 +39,16 @@ CPDFSDK_FormFillEnvironment::CPDFSDK_FormFillEnvironment(
m_pSysHandler(new CFX_SystemHandler(this)) {}
CPDFSDK_FormFillEnvironment::~CPDFSDK_FormFillEnvironment() {
+ // CPDFSDK_AnnotHandlerMgr will try to access the form fill environment
+ // when it cleans up the CFFL_InteractiveFormFiller. So, we must make sure
+ // it is cleaned up before the CFFL_InteractiveFormFiller.
Lei Zhang 2016/10/11 20:54:52 Refer to |m_pFormFiller| explicitly here?
dsinclair 2016/10/11 21:01:59 Done.
+ m_pAnnotHandlerMgr.reset();
+
+ // Must destroy the |CFFL_InteractiveFormFiller| before the environment
Lei Zhang 2016/10/11 20:54:52 |m_pFormFiller|
dsinclair 2016/10/11 21:01:59 Done.
+ // because any created form widgets hold a pointer to the environment.
+ // Those widgets may call things like |KillTimer| as they are shutdown.
Lei Zhang 2016/10/11 20:54:52 KillTimer() and no double space after.
dsinclair 2016/10/11 21:01:59 Done.
+ m_pFormFiller.reset();
+
#ifdef PDF_ENABLE_XFA
CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance();
if (pProvider->m_pEnvList.GetSize() == 0)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698