From a6a65ecdef3a577b537b5d9fccb9d41e585b9f14 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Tue, 19 Jan 2016 10:58:44 +0100 Subject: [PATCH] Make virtual ~ScValidationDlg non-inline ...otherwise, GCC 6 would aggressively inline ScValidationDlg destruction of the VclPtr in ScValidityRefChildWin::ScValidityRefChildWin (sc/source/ui/view/reffact.cxx, in sc library), checking whether the vtable points at ~ScValidationDlg (instead of a derived class dtor) to directly inline the ~ScValidationDlg code, which requires the ScValidateionDlg vtable (to store it in the object's vtable during destruction), which requires the code of inline virtual ScValidationDlg::dispose and ScValidationDlg::Close, which in turn need the addresses of (non-inline) ScValidationDlg::RemoveRefDlg and ScTPValidationValue::RemoveRefDlg, both defined in the scui library and not exported from there. Change-Id: I7eb96f42deb5edd844d91e999aa5511679302c01 (cherry picked from commit 8d1a24dae03690b576310e3539369916f31ac475) Reviewed-on: https://gerrit.libreoffice.org/21637 Reviewed-by: Eike Rathke Tested-by: Eike Rathke --- sc/source/ui/dbgui/validate.cxx | 5 +++++ sc/source/ui/inc/validate.hxx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sc/source/ui/dbgui/validate.cxx b/sc/source/ui/dbgui/validate.cxx index 459c5d7..db73012 100644 --- a/sc/source/ui/dbgui/validate.cxx +++ b/sc/source/ui/dbgui/validate.cxx @@ -96,6 +96,11 @@ ScValidationDlg::ScValidationDlg(vcl::Window* pParent, const SfxItemSet* pArgSet get(m_pHBox, "refinputbox"); } +ScValidationDlg::~ScValidationDlg() +{ + disposeOnce(); +} + void ScTPValidationValue::SetReferenceHdl( const ScRange&rRange , ScDocument* pDoc ) { if ( rRange.aStart != rRange.aEnd ) diff --git a/sc/source/ui/inc/validate.hxx b/sc/source/ui/inc/validate.hxx index d39b99b..1e785b7 100644 --- a/sc/source/ui/inc/validate.hxx +++ b/sc/source/ui/inc/validate.hxx @@ -182,7 +182,7 @@ class ScValidationDlg public: explicit ScValidationDlg( vcl::Window* pParent, const SfxItemSet* pArgSet, ScTabViewShell * pTabViewSh, SfxBindings *pB = nullptr ); - virtual ~ScValidationDlg() { disposeOnce(); } + virtual ~ScValidationDlg(); virtual void dispose() override { if( m_bOwnRefHdlr ) -- 2.5.0