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) {