diff options
Diffstat (limited to 'Source/kwsys/DynamicLoader.cxx')
| -rw-r--r-- | Source/kwsys/DynamicLoader.cxx | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/Source/kwsys/DynamicLoader.cxx b/Source/kwsys/DynamicLoader.cxx index 66ee9ea..8afc2e8 100644 --- a/Source/kwsys/DynamicLoader.cxx +++ b/Source/kwsys/DynamicLoader.cxx @@ -275,20 +275,20 @@ const char* DynamicLoader::LastError() if (length < 1) { /* FormatMessage failed. Use a default message. */ - _snprintf(str, DYNLOAD_ERROR_BUFFER_SIZE, - "DynamicLoader encountered error 0x%X. " - "FormatMessage failed with error 0x%X", - error, GetLastError()); + snprintf(str, DYNLOAD_ERROR_BUFFER_SIZE, + "DynamicLoader encountered error 0x%lX. " + "FormatMessage failed with error 0x%lX", + error, GetLastError()); return str; } if (!WideCharToMultiByte(CP_UTF8, 0, lpMsgBuf, -1, str, DYNLOAD_ERROR_BUFFER_SIZE, nullptr, nullptr)) { /* WideCharToMultiByte failed. Use a default message. */ - _snprintf(str, DYNLOAD_ERROR_BUFFER_SIZE, - "DynamicLoader encountered error 0x%X. " - "WideCharToMultiByte failed with error 0x%X", - error, GetLastError()); + snprintf(str, DYNLOAD_ERROR_BUFFER_SIZE, + "DynamicLoader encountered error 0x%lX. " + "WideCharToMultiByte failed with error 0x%lX", + error, GetLastError()); } return str; @@ -436,9 +436,14 @@ namespace KWSYS_NAMESPACE { DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary( const std::string& libname, int flags) { - CHECK_OPEN_FLAGS(flags, 0, nullptr); + CHECK_OPEN_FLAGS(flags, RTLDGlobal, nullptr); + + int llFlags = RTLD_LAZY; + if (flags & RTLDGlobal) { + llFlags |= RTLD_GLOBAL; + } - return dlopen(libname.c_str(), RTLD_LAZY); + return dlopen(libname.c_str(), llFlags); } int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib) |
