Kaydet (Commit) 3f695473 authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: tdf#46440 SIGSEGV on toolkit bootstrap without running instance

Change-Id: I9a78a75b3d72586b1702ed6fa63bb0b62ce6cd72
üst 407c6c87
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include <com/sun/star/awt/XToolkitExperimental.hpp> #include <com/sun/star/awt/XToolkitExperimental.hpp>
#include <com/sun/star/awt/XMessageBoxFactory.hpp> #include <com/sun/star/awt/XMessageBoxFactory.hpp>
#include <cppuhelper/bootstrap.hxx>
#include <cppuhelper/compbase2.hxx> #include <cppuhelper/compbase2.hxx>
#include <cppuhelper/interfacecontainer.hxx> #include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/supportsservice.hxx> #include <cppuhelper/supportsservice.hxx>
...@@ -595,6 +596,25 @@ static void SAL_CALL ToolkitWorkerFunction( void* pArgs ) ...@@ -595,6 +596,25 @@ static void SAL_CALL ToolkitWorkerFunction( void* pArgs )
{ {
osl_setThreadName("VCLXToolkit VCL main thread"); osl_setThreadName("VCLXToolkit VCL main thread");
css::uno::Reference<css::lang::XMultiServiceFactory> xServiceManager;
try
{
xServiceManager = ::comphelper::getProcessServiceFactory();
}
catch (const css::uno::DeploymentException&)
{
}
if (!xServiceManager.is())
{
css::uno::Reference<css::uno::XComponentContext> xContext =
::cppu::defaultBootstrap_InitialComponentContext();
xServiceManager = css::uno::Reference<css::lang::XMultiServiceFactory>(
xContext->getServiceManager(), css::uno::UNO_QUERY_THROW );
// set global process service factory used by unotools config helpers
::comphelper::setProcessServiceFactory( xServiceManager );
}
VCLXToolkit * pTk = static_cast<VCLXToolkit *>(pArgs); VCLXToolkit * pTk = static_cast<VCLXToolkit *>(pArgs);
bInitedByVCLToolkit = InitVCL(); bInitedByVCLToolkit = InitVCL();
if( bInitedByVCLToolkit ) if( bInitedByVCLToolkit )
......
...@@ -418,7 +418,8 @@ void Application::AcquireSolarMutex( sal_uLong nCount ) ...@@ -418,7 +418,8 @@ void Application::AcquireSolarMutex( sal_uLong nCount )
bool Application::IsInMain() bool Application::IsInMain()
{ {
return ImplGetSVData()->maAppData.mbInAppMain; ImplSVData* pSVData = ImplGetSVData();
return pSVData ? pSVData->maAppData.mbInAppMain : false;
} }
bool Application::IsInExecute() bool Application::IsInExecute()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment