From b85a5bd5d5eecf715bf14ba189d1d5be6087b411 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 8 Jan 2014 11:12:34 +0100 Subject: [PATCH] Some changes in DynLib internals Former-commit-id: cfd8cbbdf30e2b0a6faa3a283c860001b07ae6de --- src/Nazara/Core/DynLib.cpp | 14 ++++++++------ src/Nazara/Core/Win32/DynLibImpl.cpp | 8 ++------ src/Nazara/Core/Win32/DynLibImpl.hpp | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/Nazara/Core/DynLib.cpp b/src/Nazara/Core/DynLib.cpp index a1ec56949..f9bd1c910 100644 --- a/src/Nazara/Core/DynLib.cpp +++ b/src/Nazara/Core/DynLib.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #if defined(NAZARA_PLATFORM_WINDOWS) #include @@ -66,14 +67,15 @@ bool NzDynLib::Load(const NzString& libraryPath, bool appendExtension) Unload(); - m_impl = new NzDynLibImpl(this); - if (!m_impl->Load(libraryPath, appendExtension, &m_lastError)) - { - delete m_impl; - m_impl = nullptr; + NzString path = libraryPath; + if (appendExtension && !path.EndsWith(NAZARA_DYNLIB_EXTENSION)) + path += NAZARA_DYNLIB_EXTENSION; + std::unique_ptr impl(new NzDynLibImpl(this)); + if (!impl->Load(path, &m_lastError)) return false; - } + + m_impl = impl.release(); return true; } diff --git a/src/Nazara/Core/Win32/DynLibImpl.cpp b/src/Nazara/Core/Win32/DynLibImpl.cpp index 6fe3426b4..5f79ddc2f 100644 --- a/src/Nazara/Core/Win32/DynLibImpl.cpp +++ b/src/Nazara/Core/Win32/DynLibImpl.cpp @@ -23,13 +23,9 @@ NzDynLibFunc NzDynLibImpl::GetSymbol(const NzString& symbol, NzString* errorMess return sym; } -bool NzDynLibImpl::Load(const NzString& libraryPath, bool appendExtension, NzString* errorMessage) +bool NzDynLibImpl::Load(const NzString& libraryPath, NzString* errorMessage) { - NzString path = libraryPath; - if (appendExtension && !path.EndsWith(".dll")) - path += ".dll"; - - std::unique_ptr wPath(path.GetWideBuffer()); + std::unique_ptr wPath(libraryPath.GetWideBuffer()); m_handle = LoadLibraryW(wPath.get()); if (m_handle) diff --git a/src/Nazara/Core/Win32/DynLibImpl.hpp b/src/Nazara/Core/Win32/DynLibImpl.hpp index 1625cd388..c4393d5ea 100644 --- a/src/Nazara/Core/Win32/DynLibImpl.hpp +++ b/src/Nazara/Core/Win32/DynLibImpl.hpp @@ -20,7 +20,7 @@ class NzDynLibImpl : NzNonCopyable ~NzDynLibImpl() = default; NzDynLibFunc GetSymbol(const NzString& symbol, NzString* errorMessage) const; - bool Load(const NzString& libraryPath, bool appendExtension, NzString* errorMessage); + bool Load(const NzString& libraryPath, NzString* errorMessage); void Unload(); private: