diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-06-07 10:05:35 +0100 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2016-06-07 20:02:51 +0000 |
commit | 24f1beffe30e68ad6f19ced885dbee0ba99a7b75 (patch) | |
tree | 8095a0629c89c7314b7c80bb8ce54140d3bb9689 /sc | |
parent | 561695d21d92a1911fbf64bf1231d0eaae3e67e6 (diff) |
Resolves: tdf#88237 crash without java but with nlp solver installed
Change-Id: Ifb451c299e4586a3a38c83a3111f3ac0b46d9315
(cherry picked from commit a33d18c1e38dd783e779ca1dbf54e1ad90cae751)
(cherry picked from commit 07c32ba5f81a3d2ed66ee182b8a7772d20c4266f)
Reviewed-on: https://gerrit.libreoffice.org/26007
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/miscdlgs/solverutil.cxx | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/sc/source/ui/miscdlgs/solverutil.cxx b/sc/source/ui/miscdlgs/solverutil.cxx index e047cb9f436a..b7a19f45e82c 100644 --- a/sc/source/ui/miscdlgs/solverutil.cxx +++ b/sc/source/ui/miscdlgs/solverutil.cxx @@ -65,20 +65,27 @@ void ScSolverUtil::GetImplementations( uno::Sequence<OUString>& rImplNames, OUString sName = xInfo->getImplementationName(); OUString sDescription; - uno::Reference<sheet::XSolver> xSolver( - xCFac->createInstanceWithContext(xCtx), uno::UNO_QUERY ); - uno::Reference<sheet::XSolverDescription> xDesc( xSolver, uno::UNO_QUERY ); - if ( xDesc.is() ) - sDescription = xDesc->getComponentDescription(); - - if ( sDescription.isEmpty() ) - sDescription = sName; // use implementation name if no description available - - rImplNames.realloc( nCount+1 ); - rImplNames[nCount] = sName; - rDescriptions.realloc( nCount+1 ); - rDescriptions[nCount] = sDescription; - ++nCount; + try + { + uno::Reference<sheet::XSolver> xSolver( + xCFac->createInstanceWithContext(xCtx), uno::UNO_QUERY ); + uno::Reference<sheet::XSolverDescription> xDesc( xSolver, uno::UNO_QUERY ); + if ( xDesc.is() ) + sDescription = xDesc->getComponentDescription(); + + if ( sDescription.isEmpty() ) + sDescription = sName; // use implementation name if no description available + + rImplNames.realloc( nCount+1 ); + rImplNames[nCount] = sName; + rDescriptions.realloc( nCount+1 ); + rDescriptions[nCount] = sDescription; + ++nCount; + } + catch (const css::uno::Exception& e) + { + SAL_INFO("sc", "ScSolverUtil::GetImplementations: cannot instantiate: " << sName << ", because: " << e.Message); + } } } } |