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 <sberg...@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 )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to