diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2019-11-03 12:44:06 +0200 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2019-11-03 13:46:04 +0100 |
commit | 35425ba5d477ef6f278366fb93f3d66fbbc6421a (patch) | |
tree | 23961fecccc28e4563f777060fe042cadc05ad34 | |
parent | 94afefe6ba1bec3285cce6dc567ed2f6f70725a8 (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>
-rw-r--r-- | vcl/source/window/abstdlg.cxx | 23 |
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; |