diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/compat.c | 18 | ||||
-rw-r--r-- | common/compat.h | 20 |
2 files changed, 19 insertions, 19 deletions
diff --git a/common/compat.c b/common/compat.c index b917cfa..59aaa00 100644 --- a/common/compat.c +++ b/common/compat.c @@ -127,19 +127,23 @@ p11_mutex_init (p11_mutex_t *mutex) pthread_mutexattr_destroy (&attr); } +char * +p11_dl_error (void) +{ + const char *msg = dlerror (); + return msg ? strdup (msg) : NULL; +} + #endif /* OS_UNIX */ #ifdef OS_WIN32 -const char * -p11_module_error (void) +char * +p11_dl_error (void) { DWORD code = GetLastError(); - p11_local *local; LPVOID msg_buf; - local = p11_library_get_thread_local (); - FormatMessageA (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, @@ -147,10 +151,6 @@ p11_module_error (void) MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&msg_buf, 0, NULL); - if (local->last_error) - LocalFree (local->last_error); - local->last_error = msg_buf; - return msg_buf; } diff --git a/common/compat.h b/common/compat.h index 5bcdfe2..48d97b3 100644 --- a/common/compat.h +++ b/common/compat.h @@ -115,14 +115,14 @@ int p11_thread_join (thread_t thread); typedef HMODULE dl_module_t; -#define p11_module_open(f) \ +#define p11_dl_open(f) \ (LoadLibrary (f)) -#define p11_module_close(d) \ +#define p11_dl_close(d) \ (FreeLibrary (d)) -#define p11_module_symbol(d, s) \ +#define p11_dl_symbol(d, s) \ ((void *)GetProcAddress ((d), (s))) -const char * p11_module_error (void); +char * p11_dl_error (void); #define p11_sleep_ms(ms) \ (Sleep (ms)) @@ -165,15 +165,15 @@ typedef void * (*p11_thread_routine) (void *arg); typedef void * dl_module_t; -#define p11_module_open(f) \ +#define p11_dl_open(f) \ (dlopen ((f), RTLD_LOCAL | RTLD_NOW)) -#define p11_module_close(d) \ - (dlclose(d)) -#define p11_module_error() \ - (dlerror ()) -#define p11_module_symbol(d, s) \ +#define p11_dl_close \ + dlclose +#define p11_dl_symbol(d, s) \ (dlsym ((d), (s))) +char * p11_dl_error (void); + #define p11_sleep_ms(ms) \ do { int _ms = (ms); \ struct timespec _ts = { _ms / 1000, (_ms % 1000) * 1000 * 1000 }; \ |