[Libreoffice-commits] core.git: sc/source

Stephan Bergmann sbergman at redhat.com
Tue Jan 19 02:28:25 PST 2016


 sc/source/ui/dbgui/validate.cxx |    5 +++++
 sc/source/ui/inc/validate.hxx   |    2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

New commits:
commit 8d1a24dae03690b576310e3539369916f31ac475
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Jan 19 10:58:44 2016 +0100

    Make virtual ~ScValidationDlg non-inline
    
    ...otherwise, GCC 6 would aggressively inline ScValidationDlg destruction of the
    VclPtr<ScValidationDlg> 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

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 2ef7738..8849557 100644
--- a/sc/source/ui/inc/validate.hxx
+++ b/sc/source/ui/inc/validate.hxx
@@ -176,7 +176,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 )


More information about the Libreoffice-commits mailing list