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

Michael Stahl mstahl at redhat.com
Tue May 12 05:21:23 PDT 2015


 basic/source/classes/sb.cxx |   19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

New commits:
commit be88e305eeac88e51f83efc004d4b60b87f1e757
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue May 12 13:47:38 2015 +0200

    tdf#90969: basic: add horrible hack to avoid crash due to ...
    
    ... the stupid global variable GaDocBasicItems.
    
    Change-Id: Ib849e0e2b661e54005d00091f6d6fc474dc5549b

diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx
index 559cb3c..a8f1bc6 100644
--- a/basic/source/classes/sb.cxx
+++ b/basic/source/classes/sb.cxx
@@ -24,6 +24,7 @@
 #include <tools/rcid.h>
 #include <tools/stream.hxx>
 #include <tools/errinf.hxx>
+#include <tools/solarmutex.hxx>
 #include <basic/sbx.hxx>
 #include <tools/rc.hxx>
 #include <vcl/svapp.hxx>
@@ -109,10 +110,22 @@ DocBasicItem::DocBasicItem( StarBASIC& rDocBasic ) :
 
 DocBasicItem::~DocBasicItem()
 {
-    SolarMutexGuard g;
+    // tdf#90969 HACK: don't use SolarMutexGuard - there is a horrible global
+    // map GaDocBasicItems holding instances, and these get deleted from exit
+    // handlers, when the SolarMutex is already dead
+    tools::SolarMutex::Acquire();
 
-    stopListening();
-    mxClassModules.Clear(); // release with SolarMutex locked
+    try
+    {
+        stopListening();
+        mxClassModules.Clear(); // release with SolarMutex locked
+    }
+    catch (...)
+    {
+        assert(false);
+    }
+
+    tools::SolarMutex::Release();
 }
 
 void DocBasicItem::clearDependingVarsOnDelete( StarBASIC& rDeletedBasic )


More information about the Libreoffice-commits mailing list