diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-06-07 10:05:35 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-06-07 10:06:06 +0100 |
commit | 07c32ba5f81a3d2ed66ee182b8a7772d20c4266f (patch) | |
tree | b0a1a2d5cd0f59ef3c04bae8aa17bcf28d173bdb | |
parent | 848737eb576555f7c01d2159a9cf64d020dc2598 (diff) |
Resolves: tdf#88237 crash without java but with nlp solver installed
Change-Id: Ifb451c299e4586a3a38c83a3111f3ac0b46d9315
(cherry picked from commit a33d18c1e38dd783e779ca1dbf54e1ad90cae751)
-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); + } } } } |