summaryrefslogtreecommitdiff
path: root/cppu
diff options
context:
space:
mode:
authorTor Lillqvist <tlillqvist@novell.com>2010-11-10 18:33:43 +0200
committerTor Lillqvist <tml@hemulen.(none)>2010-11-10 18:40:38 +0200
commit146e2fbca20f5cba3410d3d042ae6222a565dd7e (patch)
treea4825ac4a78e16a33a09c571c93a7c2f0eef62b1 /cppu
parent01123c23abb3e7e128045903a8c2d56debc99e4f (diff)
Add workaround to avoid crash when exiting LibreOffice
Reintroduce the horrible CPPU_LEAK_STATIC_DATA hack used in OOo 3.2.1, but only for Windows builds. No idea what causes the crash. See fdo#31494. Don't know if this hack has some bad consequences then, i#107490 seems to say so.
Diffstat (limited to 'cppu')
-rw-r--r--cppu/source/typelib/typelib.cxx2
-rw-r--r--cppu/util/target.pmk9
2 files changed, 10 insertions, 1 deletions
diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx
index 10a7cb1ae..738f35d3c 100644
--- a/cppu/source/typelib/typelib.cxx
+++ b/cppu/source/typelib/typelib.cxx
@@ -275,6 +275,7 @@ inline void TypeDescriptor_Init_Impl::callChain(
//__________________________________________________________________________________________________
TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW( () )
{
+#ifndef CPPU_LEAK_STATIC_DATA
if( pCache )
{
TypeDescriptionList_Impl::const_iterator aIt = pCache->begin();
@@ -354,6 +355,7 @@ TypeDescriptor_Init_Impl::~TypeDescriptor_Init_Impl() SAL_THROW( () )
#endif
delete pCallbacks;
pCallbacks = 0;
+#endif // CPPU_LEAK_STATIC_DATA
if( pMutex )
{
diff --git a/cppu/util/target.pmk b/cppu/util/target.pmk
index 3befcb154..70be64b8e 100644
--- a/cppu/util/target.pmk
+++ b/cppu/util/target.pmk
@@ -45,9 +45,16 @@ CFLAGS += -O
.ELSE
-# msvc++: no inlining
.IF "$(COM)" == "MSC"
+# msvc++: no inlining
CFLAGS += -Ob0
+.IF "$(cppu_no_leak)" == ""
+.IF "$(bndchk)" == ""
+# msvc++: workaround for strange crash at exit: just don't do the
+# cleanup of types and whatnot...
+CFLAGS += -DCPPU_LEAK_STATIC_DATA
+.ENDIF
+.ENDIF
.ENDIF
.ENDIF