[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sc/source
Eike Rathke
erack at redhat.com
Mon Dec 2 07:17:13 PST 2013
sc/source/core/tool/compiler.cxx | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
New commits:
commit 0a34d4a5af3658be10ea9091096027a159cc7316
Author: Eike Rathke <erack at redhat.com>
Date: Mon Dec 2 16:05:02 2013 +0100
release SolarMutex after successful tryToAcquire()
tryToAcquire() locks if successful, so unlock when leaving
Change-Id: Ic0bd4b10ccb8419dd40946dbaf393a27e413bf2d
(cherry picked from commit e56105a1f24e9eac491c32c841030c69fb2e2d30)
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index e68cf55..55b10c3 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -2757,7 +2757,8 @@ bool ScCompiler::IsMacro( const OUString& rName )
// formulas are compiled from a threaded import may result in a deadlock.
// Check first if we actually could acquire it and if not bail out.
/* FIXME: yes, but how ... */
- if (!Application::GetSolarMutex().tryToAcquire())
+ comphelper::SolarMutex& rSolarMutex = Application::GetSolarMutex();
+ if (!rSolarMutex.tryToAcquire())
{
SAL_WARN( "sc.core", "ScCompiler::IsMacro - SolarMutex would deadlock, not obtaining Basic");
return false; // bad luck
@@ -2784,6 +2785,7 @@ bool ScCompiler::IsMacro( const OUString& rName )
SbxMethod* pMeth = (SbxMethod*) pObj->Find( aName, SbxCLASS_METHOD );
if( !pMeth )
{
+ rSolarMutex.release();
return false;
}
// It really should be a BASIC function!
@@ -2791,12 +2793,14 @@ bool ScCompiler::IsMacro( const OUString& rName )
|| ( pMeth->IsFixed() && pMeth->GetType() == SbxEMPTY )
|| !pMeth->ISA(SbMethod) )
{
+ rSolarMutex.release();
return false;
}
ScRawToken aToken;
aToken.SetExternal( aName.getStr() );
aToken.eOp = ocMacro;
pRawToken = aToken.Clone();
+ rSolarMutex.release();
return true;
#endif
}
More information about the Libreoffice-commits
mailing list