diff --git a/fpdfsdk/formfiller/cffl_checkbox.cpp b/fpdfsdk/formfiller/cffl_checkbox.cpp index 03453a33e..c2588fd8d 100644 --- a/fpdfsdk/formfiller/cffl_checkbox.cpp +++ b/fpdfsdk/formfiller/cffl_checkbox.cpp @@ -51,15 +51,13 @@ bool CFFL_CheckBox::OnChar(CPDFSDK_Widget* pWidget, CPDFSDK_PageView* pPageView = pWidget->GetPageView(); DCHECK(pPageView); + // If OnButtonUp() destroys |pObserved| (the owning CPDFSDK_Widget), its + // destructor has already destroyed |this| via + // CFFL_InteractiveFormFiller::OnDelete -> UnregisterFormField, so do not + // touch any members afterwards. ObservedPtr pObserved(widget_); - if (form_filler_->OnButtonUp(pObserved, pPageView, nFlags)) { - if (!pObserved) { - widget_ = nullptr; - } - return true; - } - if (!pObserved) { - widget_ = nullptr; + if (form_filler_->OnButtonUp(pObserved, pPageView, nFlags) || + !pObserved) { return true; }