diff --git a/crypto/dso/dso_dl.c b/crypto/dso/dso_dl.c index 4d599246c81c6c733c8be8b49359534b71b20846..dccb8e7ee83a4d678a7eab88e97cd4b9844deeee 100644 --- a/crypto/dso/dso_dl.c +++ b/crypto/dso/dso_dl.c @@ -357,7 +357,12 @@ static int dl_pathbyaddr(void *addr,char *path,int sz) struct shl_descriptor inf; int i,len; - if (addr == NULL) addr = dl_pathbyaddr; + if (addr == NULL) + { + union { int(*f)(void*,char*,int); void *p; } t = + { dl_pathbyaddr }; + addr = t.p; + } for (i=-1;shl_get_r(i,&inf)==0;i++) { diff --git a/crypto/dso/dso_dlfcn.c b/crypto/dso/dso_dlfcn.c index 56756cf54119fcc7e361838fc90b45e4c6759bd5..76630d865ec3314e0a384676d81fc5b284e97ee5 100644 --- a/crypto/dso/dso_dlfcn.c +++ b/crypto/dso/dso_dlfcn.c @@ -423,7 +423,12 @@ static int dlfcn_pathbyaddr(void *addr,char *path,int sz) Dl_info dli; int len; - if (addr == NULL) addr = dlfcn_pathbyaddr; + if (addr == NULL) + { + union { int(*f)(void*,char*,int); void *p; } t = + { dlfcn_pathbyaddr }; + addr = t.p; + } if (dladdr(addr,&dli)) { diff --git a/crypto/dso/dso_win32.c b/crypto/dso/dso_win32.c index 96ccd4b7ee63ffdda36be8d9a79dcc370cdf3dbf..317606ac5b301719754632a05634e6efdf5f9d9a 100644 --- a/crypto/dso/dso_win32.c +++ b/crypto/dso/dso_win32.c @@ -635,7 +635,12 @@ static int win32_pathbyaddr(void *addr,char *path,int sz) MODULE32 module_first, module_next; int len; - if (addr == NULL) addr = win32_pathbyaddr; + if (addr == NULL) + { + union { int(*f)(void*,char*,int); void *p; } t = + { win32_pathbyaddr }; + addr = t.p; + } dll = LoadLibrary(TEXT(DLLNAME)); if (dll == NULL)