Index: pdf/pdfium/pdfium_engine.cc |
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc |
index 0cc8b2613ce156ffcc32300872e604caeb166d8a..e00be780804ea77b5b569973cef187df1c3d9a70 100644 |
--- a/pdf/pdfium/pdfium_engine.cc |
+++ b/pdf/pdfium/pdfium_engine.cc |
@@ -677,8 +677,16 @@ PDFiumEngine::~PDFiumEngine() { |
if (doc_) { |
FORM_DoDocumentAAction(form_, FPDFDOC_AACTION_WC); |
+ |
+#ifdef PDF_USE_XFA |
+ // XFA may require |form_| to outlive |doc_|, so shut down in that order. |
FPDF_CloseDocument(doc_); |
FPDFDOC_ExitFormFillEnvironment(form_); |
+#else |
+ // Normally |doc_| should outlive |form_|. |
+ FPDFDOC_ExitFormFillEnvironment(form_); |
+ FPDF_CloseDocument(doc_); |
+#endif |
} |
FPDFAvail_Destroy(fpdf_availability_); |