Prefer retaining layout item in CXFA_FFField::OnChar().
This is more reliable than observing its destruction.
Bug: chromium:1052651
Change-Id: Ic759e1eac74b1aa8213e450b87d8c88d298ddea3
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/66690
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp
index 4fb6141..d83f8da 100644
--- a/xfa/fxfa/cxfa_fffield.cpp
+++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -567,6 +567,7 @@
}
bool CXFA_FFField::OnChar(uint32_t dwChar, uint32_t dwFlags) {
+ RetainPtr<CXFA_ContentLayoutItem> pWatched(m_pLayoutItem.Get());
if (!GetDoc()->GetXFADoc()->IsInteractive())
return false;
if (dwChar == XFA_FWL_VKEY_Tab)
@@ -576,11 +577,10 @@
if (!m_pNode->IsOpenAccess())
return false;
- ObservedPtr<CXFA_FFField> pWatched(this);
SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageKey>(
GetNormalWidget(), FWL_KeyCommand::Char, dwFlags, dwChar));
- return !!pWatched;
+ return true;
}
FWL_WidgetHit CXFA_FFField::HitTest(const CFX_PointF& point) {