summaryrefslogtreecommitdiff
path: root/comphelper
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2019-04-17 14:29:18 +0200
committerStephan Bergmann <sbergman@redhat.com>2019-04-17 17:00:56 +0200
commit884ad0d1af88f9985d30ef0dfe92d89e82f8e576 (patch)
tree08eeb0966b12e45ace2633020f23d70d1413d025 /comphelper
parentd7f4f5650dd2c7fe1ccec50efd806e695b8bc18a (diff)
Split localProcessFactory function into class with setter and getter
...which avoids a false positive from an upcoming loplugin that finds suspicious uses of variables during their own initialization (as happened with xReturn in getProcessServiceFactory). Change-Id: I40e90e2e74cde84a3425b014d87584f4a56c0e22 Reviewed-on: https://gerrit.libreoffice.org/70877 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'comphelper')
-rw-r--r--comphelper/source/processfactory/processfactory.cxx38
1 files changed, 25 insertions, 13 deletions
diff --git a/comphelper/source/processfactory/processfactory.cxx b/comphelper/source/processfactory/processfactory.cxx
index 720ec6e0fb67..31a2e7adfe05 100644
--- a/comphelper/source/processfactory/processfactory.cxx
+++ b/comphelper/source/processfactory/processfactory.cxx
@@ -33,32 +33,44 @@ using namespace osl;
namespace comphelper
{
-/*
- This function preserves only that the xProcessFactory variable will not be create when
- the library is loaded.
-*/
-static Reference< XMultiServiceFactory > localProcessFactory( const Reference< XMultiServiceFactory >& xSMgr, bool bSet )
-{
- Guard< Mutex > aGuard( Mutex::getGlobalMutex() );
+namespace {
- static Reference< XMultiServiceFactory > xProcessFactory;
- if ( bSet )
+class LocalProcessFactory {
+public:
+ void set( const Reference< XMultiServiceFactory >& xSMgr )
{
+ Guard< Mutex > aGuard( Mutex::getGlobalMutex() );
+
xProcessFactory = xSMgr;
}
- return xProcessFactory;
-}
+ Reference< XMultiServiceFactory > get()
+ {
+ Guard< Mutex > aGuard( Mutex::getGlobalMutex() );
+ return xProcessFactory;
+ }
+
+private:
+ Reference< XMultiServiceFactory > xProcessFactory;
+};
+
+/*
+ This var preserves only that the above xProcessFactory variable will not be create when
+ the library is loaded.
+*/
+LocalProcessFactory localProcessFactory;
+
+}
void setProcessServiceFactory(const Reference< XMultiServiceFactory >& xSMgr)
{
- localProcessFactory( xSMgr, true );
+ localProcessFactory.set( xSMgr );
}
Reference< XMultiServiceFactory > getProcessServiceFactory()
{
- Reference< XMultiServiceFactory> xReturn = localProcessFactory( xReturn, false );
+ Reference< XMultiServiceFactory> xReturn = localProcessFactory.get();
if ( !xReturn.is() )
{
throw DeploymentException( "null process service factory" );