From c3a5448379cdf07b408a265fe8f477901524170d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 7 Nov 2012 21:38:27 +0100 Subject: Fix usage of dlerror to conform to POSIX. * cipher/idea-stub.c: Clear last error before dlsym. -- This is required for NetBSD. Reported-by: Thomas Klausner --- cipher/idea-stub.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/cipher/idea-stub.c b/cipher/idea-stub.c index 8996c7596..abfb929e7 100644 --- a/cipher/idea-stub.c +++ b/cipher/idea-stub.c @@ -25,9 +25,9 @@ problem with this, please see http://www.noepatents.org. However for research purposes and in certain situations it might be - useful to use this algorithm anyway. + useful to use this algorithm anyway. - We provide this stub which will dynload a idea module and is only + We provide this stub which will dynload a idea module and is only used if the configure run did't found statically linked file. See http://www.gnupg.org/why-not-dea.html for details. */ @@ -55,12 +55,12 @@ #define USE_DYNAMIC_LINKING 1 static int last_error = 0; - + void* dlopen (const char *pathname, int mode) { void *h = LoadLibrary (pathname); - if (!h) + if (!h) { log_error ("LoadLibrary failed: %s\n", w32_strerror (errno)); last_error = 1; @@ -130,14 +130,16 @@ load_module (const char *name) goto failure; } + dlerror (); /* Clear old errors or initialize dlerror. */ + sym = dlsym (handle, "idea_get_info"); if (dlerror ()) sym = dlsym (handle, "_idea_get_info"); - if ((err=dlerror())) + if ((err=dlerror())) goto failure; return (INFO_FNC)sym; - + failure: log_info ("invalid module `%s': %s\n", name?name:"???", err?err:"???"); if (handle) -- cgit v1.2.3