Mercurial > hg > nginx
diff src/http/ngx_http_core_module.c @ 3395:4e15548b29d4
fix building by gcc 4.4 with -O2/3/s:
dereferencing pointer 'sin' does break strict-aliasing rules
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 22 Dec 2009 15:15:45 +0000 |
parents | 8854f4eb2839 |
children | 9e7926763f87 |
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -2850,7 +2850,7 @@ ngx_http_core_merge_srv_conf(ngx_conf_t if (!conf->listen) { ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t)); - sin = (struct sockaddr_in *) &lsopt.sockaddr; + sin = &lsopt.u.sockaddr_in; sin->sin_family = AF_INET; #if (NGX_WIN32) @@ -2867,7 +2867,7 @@ ngx_http_core_merge_srv_conf(ngx_conf_t lsopt.sndbuf = -1; lsopt.wildcard = 1; - (void) ngx_sock_ntop((struct sockaddr *) &lsopt.sockaddr, lsopt.addr, + (void) ngx_sock_ntop(&lsopt.u.sockaddr, lsopt.addr, NGX_SOCKADDR_STRLEN, 1); if (ngx_http_add_listen(cf, conf, &lsopt) == NGX_OK) { @@ -3275,7 +3275,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t)); - ngx_memcpy(lsopt.sockaddr, u.sockaddr, u.socklen); + ngx_memcpy(&lsopt.u.sockaddr, u.sockaddr, u.socklen); lsopt.socklen = u.socklen; lsopt.backlog = NGX_LISTEN_BACKLOG; @@ -3283,7 +3283,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx lsopt.sndbuf = -1; lsopt.wildcard = u.wildcard; - (void) ngx_sock_ntop((struct sockaddr *) &lsopt.sockaddr, lsopt.addr, + (void) ngx_sock_ntop(&lsopt.u.sockaddr, lsopt.addr, NGX_SOCKADDR_STRLEN, 1); for (n = 2; n < cf->args->nelts; n++) { @@ -3380,7 +3380,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) struct sockaddr *sa; - sa = (struct sockaddr *) lsopt.sockaddr; + sa = &lsopt.u.sockaddr; if (sa->sa_family == AF_INET6) {