Re-arrange destruction order in ~CXFA_FFPageWidgetIterator()

Avoid dangling UnownedPtr<> when iterator holds the last pageview reference.

Bug: chromium:1065772
Change-Id: I427a36d532c29ed57304bd08070a73ebe25c0d44
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/68030
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/cxfa_ffpageview.cpp b/xfa/fxfa/cxfa_ffpageview.cpp
index 0e87256..e185e0d 100644
--- a/xfa/fxfa/cxfa_ffpageview.cpp
+++ b/xfa/fxfa/cxfa_ffpageview.cpp
@@ -154,12 +154,12 @@
 
 CXFA_FFPageWidgetIterator::CXFA_FFPageWidgetIterator(CXFA_FFPageView* pPageView,
                                                      uint32_t dwFilter)
-    : m_pPageView(pPageView),
+    : m_sIterator(pPageView->GetLayoutItem()),
+      m_pPageView(pPageView),
       m_dwFilter(dwFilter),
-      m_bIgnoreRelevant(IsDocVersionBelow205(GetDocForPageView(pPageView))),
-      m_sIterator(pPageView->GetLayoutItem()) {}
+      m_bIgnoreRelevant(IsDocVersionBelow205(GetDocForPageView(pPageView))) {}
 
-CXFA_FFPageWidgetIterator::~CXFA_FFPageWidgetIterator() {}
+CXFA_FFPageWidgetIterator::~CXFA_FFPageWidgetIterator() = default;
 
 void CXFA_FFPageWidgetIterator::Reset() {
   m_sIterator.Reset();
diff --git a/xfa/fxfa/cxfa_ffpageview.h b/xfa/fxfa/cxfa_ffpageview.h
index 4030e78..59d32da 100644
--- a/xfa/fxfa/cxfa_ffpageview.h
+++ b/xfa/fxfa/cxfa_ffpageview.h
@@ -59,11 +59,11 @@
  private:
   CXFA_FFWidget* GetWidget(CXFA_LayoutItem* pLayoutItem);
 
+  CXFA_LayoutItemIterator m_sIterator;  // Must outlive |m_pPageView|.
   UnownedPtr<CXFA_FFPageView> const m_pPageView;
   UnownedPtr<CXFA_FFWidget> m_hCurWidget;
   const uint32_t m_dwFilter;
   const bool m_bIgnoreRelevant;
-  CXFA_LayoutItemIterator m_sIterator;
 };
 
 class CXFA_TabParam {