Add prefinalizers for other CXFA_FF* classes Similar to previous patch, but these weren't hit yet by testing of subsequent patches. But they can't be good. Bug: pdfium:1563 Change-Id: I2e49b811ea9f1295bd375149ad08abf3302df45b Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/72915 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/cxfa_ffimage.cpp b/xfa/fxfa/cxfa_ffimage.cpp index eeb0e24..c7c09f6 100644 --- a/xfa/fxfa/cxfa_ffimage.cpp +++ b/xfa/fxfa/cxfa_ffimage.cpp
@@ -17,8 +17,11 @@ CXFA_FFImage::CXFA_FFImage(CXFA_Node* pNode) : CXFA_FFWidget(pNode) {} -CXFA_FFImage::~CXFA_FFImage() { +CXFA_FFImage::~CXFA_FFImage() = default; + +void CXFA_FFImage::PreFinalize() { GetNode()->SetImageImage(nullptr); + CXFA_FFWidget::PreFinalize(); } bool CXFA_FFImage::IsLoaded() {
diff --git a/xfa/fxfa/cxfa_ffimage.h b/xfa/fxfa/cxfa_ffimage.h index 73fe546..d75e5b5 100644 --- a/xfa/fxfa/cxfa_ffimage.h +++ b/xfa/fxfa/cxfa_ffimage.h
@@ -14,7 +14,8 @@ CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; ~CXFA_FFImage() override; - // CXFA_FFWidget + // CXFA_FFWidget: + void PreFinalize() override; void RenderWidget(CXFA_Graphics* pGS, const CFX_Matrix& matrix, HighlightOption highlight) override;
diff --git a/xfa/fxfa/cxfa_ffimageedit.cpp b/xfa/fxfa/cxfa_ffimageedit.cpp index 55fd3d3..c8e1961 100644 --- a/xfa/fxfa/cxfa_ffimageedit.cpp +++ b/xfa/fxfa/cxfa_ffimageedit.cpp
@@ -26,8 +26,11 @@ CXFA_FFImageEdit::CXFA_FFImageEdit(CXFA_Node* pNode) : CXFA_FFField(pNode) {} -CXFA_FFImageEdit::~CXFA_FFImageEdit() { +CXFA_FFImageEdit::~CXFA_FFImageEdit() = default; + +void CXFA_FFImageEdit::PreFinalize() { m_pNode->SetImageEditImage(nullptr); + CXFA_FFField::PreFinalize(); } bool CXFA_FFImageEdit::LoadWidget() {
diff --git a/xfa/fxfa/cxfa_ffimageedit.h b/xfa/fxfa/cxfa_ffimageedit.h index 1dd27d8..dd3376c 100644 --- a/xfa/fxfa/cxfa_ffimageedit.h +++ b/xfa/fxfa/cxfa_ffimageedit.h
@@ -15,7 +15,8 @@ CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; ~CXFA_FFImageEdit() override; - // CXFA_FFField + // CXFA_FFField: + void PreFinalize() override; void RenderWidget(CXFA_Graphics* pGS, const CFX_Matrix& matrix, HighlightOption highlight) override;
diff --git a/xfa/fxfa/cxfa_fflistbox.cpp b/xfa/fxfa/cxfa_fflistbox.cpp index 15960d4..819f7ba 100644 --- a/xfa/fxfa/cxfa_fflistbox.cpp +++ b/xfa/fxfa/cxfa_fflistbox.cpp
@@ -28,13 +28,15 @@ CXFA_FFListBox::CXFA_FFListBox(CXFA_Node* pNode) : CXFA_FFDropDown(pNode) {} -CXFA_FFListBox::~CXFA_FFListBox() { - if (!GetNormalWidget()) - return; +CXFA_FFListBox::~CXFA_FFListBox() = default; - CFWL_NoteDriver* pNoteDriver = - GetNormalWidget()->GetFWLApp()->GetNoteDriver(); - pNoteDriver->UnregisterEventTarget(GetNormalWidget()); +void CXFA_FFListBox::PreFinalize() { + if (GetNormalWidget()) { + CFWL_NoteDriver* pNoteDriver = + GetNormalWidget()->GetFWLApp()->GetNoteDriver(); + pNoteDriver->UnregisterEventTarget(GetNormalWidget()); + } + CXFA_FFDropDown::PreFinalize(); } bool CXFA_FFListBox::LoadWidget() {
diff --git a/xfa/fxfa/cxfa_fflistbox.h b/xfa/fxfa/cxfa_fflistbox.h index 11074ef..581bbd8 100644 --- a/xfa/fxfa/cxfa_fflistbox.h +++ b/xfa/fxfa/cxfa_fflistbox.h
@@ -16,6 +16,7 @@ ~CXFA_FFListBox() override; // CXFA_FFField: + void PreFinalize() override; bool LoadWidget() override; bool OnKillFocus(CXFA_FFWidget* pNewWidget) override WARN_UNUSED_RESULT; void OnProcessMessage(CFWL_Message* pMessage) override;