diff options
Diffstat (limited to 'fpdfsdk')
-rw-r--r-- | fpdfsdk/fpdfxfa/cpdfxfa_context.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp index ed58d24b1f..84fcb37d16 100644 --- a/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp +++ b/fpdfsdk/fpdfxfa/cpdfxfa_context.cpp @@ -73,8 +73,16 @@ void CPDFXFA_Context::SetFormFillEnv( // The layout data can have pointers back into the script context. That // context will be different if the form fill environment closes, so, force // the layout data to clear. - if (m_pXFADoc && m_pXFADoc->GetXFADoc()) + if (m_pXFADoc && m_pXFADoc->GetXFADoc()) { + // The CPDF_XFADocView has a pointer to the CXFA_LayoutProcessor which is + // owned by the CXFA_Document. The Layout Processor will be freed with the + // ClearLayoutData() call. Make sure the doc view has already released the + // pointer. + if (m_pXFADocView) + m_pXFADocView->ResetLayoutProcessor(); + m_pXFADoc->GetXFADoc()->ClearLayoutData(); + } m_pFormFillEnv.Reset(pFormFillEnv); } |