summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2019-11-03 12:44:06 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2019-11-03 13:46:04 +0100
commit35425ba5d477ef6f278366fb93f3d66fbbc6421a (patch)
tree23961fecccc28e4563f777060fe042cadc05ad34 /vcl
parent94afefe6ba1bec3285cce6dc567ed2f6f70725a8 (diff)
Only initialize function pointer once
Change-Id: I559e90948b9dc1c78fa7ff03a96edc1cb9fbe3e2 Reviewed-on: https://gerrit.libreoffice.org/81958 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/window/abstdlg.cxx23
1 files changed, 12 insertions, 11 deletions
diff --git a/vcl/source/window/abstdlg.cxx b/vcl/source/window/abstdlg.cxx
index cb16145c6085..b774b0206f3e 100644
--- a/vcl/source/window/abstdlg.cxx
+++ b/vcl/source/window/abstdlg.cxx
@@ -21,7 +21,7 @@
#include <vcl/abstdlg.hxx>
#include <vcl/bitmapex.hxx>
-typedef VclAbstractDialogFactory* (*FuncPtrCreateDialogFactory)();
+typedef VclAbstractDialogFactory* (SAL_CALL* FuncPtrCreateDialogFactory)();
#ifndef DISABLE_DYNLOADING
extern "C" { static void thisModule() {} }
@@ -31,19 +31,20 @@ extern "C" VclAbstractDialogFactory* CreateDialogFactory();
VclAbstractDialogFactory* VclAbstractDialogFactory::Create()
{
- FuncPtrCreateDialogFactory fp = nullptr;
+ static auto fp = []() -> FuncPtrCreateDialogFactory {
#ifndef DISABLE_DYNLOADING
- static ::osl::Module aDialogLibrary;
- if (aDialogLibrary.is() ||
- aDialogLibrary.loadRelative(&thisModule, CUI_DLL_NAME,
- SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY))
- {
- fp = reinterpret_cast<VclAbstractDialogFactory* (SAL_CALL*)()>(
- aDialogLibrary.getFunctionSymbol( "CreateDialogFactory" ) );
- }
+ static ::osl::Module aDialogLibrary;
+ if (aDialogLibrary.loadRelative(&thisModule, CUI_DLL_NAME,
+ SAL_LOADMODULE_GLOBAL | SAL_LOADMODULE_LAZY))
+ {
+ return reinterpret_cast<FuncPtrCreateDialogFactory>(
+ aDialogLibrary.getFunctionSymbol( "CreateDialogFactory" ) );
+ }
+ return nullptr;
#else
- fp = CreateDialogFactory;
+ return CreateDialogFactory;
#endif
+ }();
if ( fp )
return fp();
return nullptr;