提交 9a0c776c 编写于 作者: D Dr. Stephen Henson

Prevent aliasing warning

上级 77db140f
...@@ -257,7 +257,10 @@ static void *dlfcn_bind_var(DSO *dso, const char *symname) ...@@ -257,7 +257,10 @@ static void *dlfcn_bind_var(DSO *dso, const char *symname)
static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname) static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)
{ {
void *ptr; void *ptr;
DSO_FUNC_TYPE sym, *tsym = &sym; union {
DSO_FUNC_TYPE sym;
void *dlret;
} u;
if((dso == NULL) || (symname == NULL)) if((dso == NULL) || (symname == NULL))
{ {
...@@ -275,14 +278,14 @@ static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname) ...@@ -275,14 +278,14 @@ static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)
DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE); DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE);
return(NULL); return(NULL);
} }
*(void **)(tsym) = dlsym(ptr, symname); u.dlret = dlsym(ptr, symname);
if(sym == NULL) if(u.dlret == NULL)
{ {
DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE); DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE);
ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); ERR_add_error_data(4, "symname(", symname, "): ", dlerror());
return(NULL); return(NULL);
} }
return(sym); return u.sym;
} }
static char *dlfcn_merger(DSO *dso, const char *filespec1, static char *dlfcn_merger(DSO *dso, const char *filespec1,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册