sc/source/core/tool/compiler.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
New commits: commit e56105a1f24e9eac491c32c841030c69fb2e2d30 Author: Eike Rathke <er...@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 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 } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits