From 09eba90c9060d0c2c6b8a2d6ea80fbe44c106f6f Mon Sep 17 00:00:00 2001 From: Martin Bremmer Date: Tue, 3 Sep 2019 12:02:20 +0200 Subject: [PATCH] Fixed dynlib Windows issues after merge. Signed-off-by: Martin Bremmer --- src/ddsrt/src/dynlib/windows/dynlib.c | 108 +++++++++++++------------- src/ddsrt/tests/CMakeLists.txt | 6 +- src/ddsrt/tests/dynlib.c | 11 --- 3 files changed, 56 insertions(+), 69 deletions(-) diff --git a/src/ddsrt/src/dynlib/windows/dynlib.c b/src/ddsrt/src/dynlib/windows/dynlib.c index 38e1688..9a8eb46 100644 --- a/src/ddsrt/src/dynlib/windows/dynlib.c +++ b/src/ddsrt/src/dynlib/windows/dynlib.c @@ -17,79 +17,79 @@ #include "dds/ddsrt/types.h" #include "dds/ddsrt/string.h" -dds_retcode_t ddsrt_dlopen(const char *name, bool translate, - ddsrt_dynlib_t *handle) { - dds_retcode_t retcode = DDS_RETCODE_OK; +dds_return_t ddsrt_dlopen(const char *name, bool translate, + ddsrt_dynlib_t *handle) { + dds_return_t retcode = DDS_RETCODE_OK; - assert( handle ); - *handle = NULL; + assert( handle ); + *handle = NULL; - if ((translate) && (strrchr(name, '/') == NULL ) - && (strrchr(name, '\\') == NULL )) { - /* Add suffix to the name and try to open. */ - static const char suffix[] = ".dll"; - size_t len = strlen(name) + sizeof(suffix); - char* libName = ddsrt_malloc(len); - sprintf_s(libName, len, "%s%s", name, suffix); - *handle = LoadLibrary(libName); - ddsrt_free(libName); - } + if ((translate) && (strrchr(name, '/') == NULL ) + && (strrchr(name, '\\') == NULL )) { + /* Add suffix to the name and try to open. */ + static const char suffix[] = ".dll"; + size_t len = strlen(name) + sizeof(suffix); + char* libName = ddsrt_malloc(len); + sprintf_s(libName, len, "%s%s", name, suffix); + *handle = (ddsrt_dynlib_t)LoadLibrary(libName); + ddsrt_free(libName); + } - if (*handle == NULL) { - /* Name contains a path, - * (auto)translate is disabled or - * LoadLibrary on translated name failed. */ - *handle = LoadLibrary(name); - } + if (*handle == NULL) { + /* Name contains a path, + * (auto)translate is disabled or + * LoadLibrary on translated name failed. */ + *handle = (ddsrt_dynlib_t)LoadLibrary(name); + } - if (*handle != NULL) { - retcode = DDS_RETCODE_OK; - } else { - retcode = DDS_RETCODE_ERROR; - } + if (*handle != NULL) { + retcode = DDS_RETCODE_OK; + } else { + retcode = DDS_RETCODE_ERROR; + } - return retcode; + return retcode; } -dds_retcode_t ddsrt_dlclose(ddsrt_dynlib_t handle) { +dds_return_t ddsrt_dlclose(ddsrt_dynlib_t handle) { - assert ( handle ); - return (FreeLibrary(handle) == 0) ? DDS_RETCODE_ERROR : DDS_RETCODE_OK; + assert ( handle ); + return (FreeLibrary((HMODULE)handle) == 0) ? DDS_RETCODE_ERROR : DDS_RETCODE_OK; } -dds_retcode_t ddsrt_dlsym(ddsrt_dynlib_t handle, const char *symbol, - void **address) { - dds_retcode_t retcode = DDS_RETCODE_OK; +dds_return_t ddsrt_dlsym(ddsrt_dynlib_t handle, const char *symbol, + void **address) { + dds_return_t retcode = DDS_RETCODE_OK; - assert( handle ); - assert( address ); - assert( symbol ); + assert( handle ); + assert( address ); + assert( symbol ); - *address = GetProcAddress(handle, symbol); - if ( *address == NULL ) { - retcode = DDS_RETCODE_ERROR; - } + *address = GetProcAddress((HMODULE)handle, symbol); + if ( *address == NULL ) { + retcode = DDS_RETCODE_ERROR; + } - return retcode; + return retcode; } -dds_retcode_t ddsrt_dlerror(char *buf, size_t buflen) { +dds_return_t ddsrt_dlerror(char *buf, size_t buflen) { - /* Hopefully (and likely), the last error is - * related to a Library action attempt. */ - DWORD err; - assert ( buf ); + /* Hopefully (and likely), the last error is + * related to a Library action attempt. */ + DWORD err; + assert ( buf ); - dds_retcode_t retcode = DDS_RETCODE_OK; + dds_return_t retcode = DDS_RETCODE_OK; - err = GetLastError(); - if ( err == 0 ) { - retcode = DDS_RETCODE_NOT_FOUND; - } else { - retcode = ddsrt_strerror_r(err, buf, buflen); - } + err = GetLastError(); + if ( err == 0 ) { + retcode = DDS_RETCODE_NOT_FOUND; + } else { + retcode = ddsrt_strerror_r(err, buf, buflen); + } - return retcode; + return retcode; } diff --git a/src/ddsrt/tests/CMakeLists.txt b/src/ddsrt/tests/CMakeLists.txt index d5b479d..36a4a5f 100644 --- a/src/ddsrt/tests/CMakeLists.txt +++ b/src/ddsrt/tests/CMakeLists.txt @@ -10,6 +10,7 @@ # SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause # include(CUnit) +include(GenerateExportHeader) include(GenerateDummyExportHeader) list(APPEND sources @@ -90,10 +91,7 @@ generate_dummy_export_header( BASE_NAME dds EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/include/dds/export.h") -generate_dummy_export_header( - ${test_lib_name} - BASE_NAME lib_test - EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/lib_test_export.h") +generate_export_header(${test_lib_name} BASE_NAME LIB_TEST) if(HAVE_MULTI_PROCESS) # A separate application is required to test process management. diff --git a/src/ddsrt/tests/dynlib.c b/src/ddsrt/tests/dynlib.c index d52d3a1..76d5871 100644 --- a/src/ddsrt/tests/dynlib.c +++ b/src/ddsrt/tests/dynlib.c @@ -185,14 +185,3 @@ CU_Test(ddsrt_library, dlclose_error) CU_ASSERT_EQUAL(r, DDS_RETCODE_ERROR); } - -CU_Test(ddsrt_library, dlerror_notfound) -{ - char buffer[256]; - dds_return_t r; - ddsrt_dlerror(buffer, sizeof(buffer)); - r = ddsrt_dlerror(buffer, sizeof(buffer)); - CU_ASSERT_EQUAL(r, DDS_RETCODE_NOT_FOUND); - -} -