From a11536d5ea695826844581c8c8f883970e0c8294 Mon Sep 17 00:00:00 2001 From: Mike Kaganski Date: Wed, 15 May 2019 08:31:44 +0200 Subject: Use lambdas to initialize statics Change-Id: Ib03bfd795967ba70333d71d9e5eeec97be90be79 Reviewed-on: https://gerrit.libreoffice.org/72334 Tested-by: Jenkins Reviewed-by: Mike Kaganski --- shell/source/win32/spsupp/spsuppServ.cxx | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'shell') diff --git a/shell/source/win32/spsupp/spsuppServ.cxx b/shell/source/win32/spsupp/spsuppServ.cxx index 78af725bec60..f15f505fd730 100644 --- a/shell/source/win32/spsupp/spsuppServ.cxx +++ b/shell/source/win32/spsupp/spsuppServ.cxx @@ -37,35 +37,33 @@ HANDLE g_hModule; ITypeLib* GetTypeLib() { typedef std::unique_ptr ITypeLibGuard; - static ITypeLibGuard aITypeLibGuard(nullptr, [](IUnknown* p) { if (p) p->Release(); }); - if (!aITypeLibGuard.get()) - { + static ITypeLibGuard s_aITypeLibGuard = [] { + ITypeLibGuard aITypeLibGuard(nullptr, [](IUnknown* p) { if (p) p->Release(); }); wchar_t szFile[MAX_PATH]; if (GetModuleFileNameW(static_cast(g_hModule), szFile, MAX_PATH) == 0) - return nullptr; + return aITypeLibGuard; ITypeLib* pTypeLib; - HRESULT hr = LoadTypeLib(szFile, &pTypeLib); - if (FAILED(hr)) - return nullptr; + if (FAILED(LoadTypeLib(szFile, &pTypeLib))) + return aITypeLibGuard; aITypeLibGuard.reset(pTypeLib); - } - return aITypeLibGuard.get(); + return aITypeLibGuard; + }(); + return s_aITypeLibGuard.get(); } const wchar_t* GetLOPath() { - static wchar_t sPath[MAX_PATH] = { 0 }; - if (*sPath == 0) - { - // Initialization + static wchar_t* s_sPath = []() -> wchar_t* { + static wchar_t sPath[MAX_PATH]; if (GetModuleFileNameW(static_cast(g_hModule), sPath, MAX_PATH) == 0) return nullptr; wchar_t* pSlashPos = wcsrchr(sPath, L'\\'); if (pSlashPos == nullptr) return nullptr; - wcscpy(pSlashPos+1, L"soffice.exe"); - } - return sPath; + wcscpy(pSlashPos + 1, L"soffice.exe"); + return sPath; + }(); + return s_sPath; } BOOL APIENTRY DllMain( HANDLE hinstDLL, -- cgit