From aaf753e2ff010aecb29f53b21bce12eb26ebde5e Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Mon, 24 May 2010 21:11:17 +0200 Subject: fixed wrong handling of dlsym --- src/library/loader.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/library/loader.c b/src/library/loader.c index 1606557..8419445 100644 --- a/src/library/loader.c +++ b/src/library/loader.c @@ -132,11 +132,18 @@ char *wolf_library_error_msg( const wolf_library_p library, char *buf, size_t b WOLF_LIBRARY_FUNCPTR wolf_library_get_func( const wolf_library_p l, const char *name, wolf_error_t *error ) { WOLF_LIBRARY_FUNCPTR ret; + char *err = NULL; #if defined HAVE_DLFCN + /* clear error state before calling dlsym, so that calling dlsym + * can return a NULL as value of a symbol + */ + (void)dlerror( ); + ret = dlsym( l->handle, name ); - if( ret == NULL ) { - strncpy( l->errbuf, dlerror( ), INTERNAL_ERRBUF_SIZE ); + err = dlerror( ); + if( err != NULL ) { + strncpy( l->errbuf, err, INTERNAL_ERRBUF_SIZE ); *error = WOLF_ERR_INTERNAL; return ret; } -- cgit v1.2.3-54-g00ecf