# # # patch "ChangeLog" # from [d1c5bcba4534822fc304d16685a4fe9a7491076b] # to [dfe1fc9cbb5266117e6112a8f7eb296298a6109c] # # patch "m4/prog_cxx_warnings.m4" # from [139fc00ee4d586ee79176dab19b0fc9e1338b83f] # to [763f898009aea9fa61c6134714e5d8982161b1e8] # # patch "netxx/peer.cxx" # from [595a0c89aa5a9af5f44d98eba0e71ee80b572551] # to [8840c1e7f828fd2cbb9b89b6180553babe3d27db] # # patch "netxx/sockaddr.cxx" # from [94a16c9fcdeeb685b2614919eea41bc058b98a93] # to [d2d94fbec9c97a4263f541c44e17eec65b3d6459] # # patch "netxx/sockaddr.h" # from [6c7db29369f681dc40484c73f6d848f9e7bd5137] # to [2f123a08f0a2bbba15a921709c9e8fed84e7c1f7] # ============================================================ --- ChangeLog d1c5bcba4534822fc304d16685a4fe9a7491076b +++ ChangeLog dfe1fc9cbb5266117e6112a8f7eb296298a6109c @@ -1,3 +1,15 @@ +2006-03-11 Matthew Gregan + + * m4/prog_cxx_warnings.m4: Turn on extra warnings (-W) when using + GCC. Also disable 'unused variable' warnings (enabled by -W) for + now. This change only causes 8 new warnings (all of one + type--signed vs unsigned) to occur. + + * netxx/peer.cxx, netxx/sockaddr.cxx, netxx/sockaddr.h: Correct + the only six cases of type punning that occur (that GCC 4.1 can + detect, at least) in C++ code we compile. It is probably safe to + remove -fno-strict-aliasing from CXXFLAGS now. + 2006-03-10 Richard Levitte * po/fr.po: Small details to change. ============================================================ --- m4/prog_cxx_warnings.m4 139fc00ee4d586ee79176dab19b0fc9e1338b83f +++ m4/prog_cxx_warnings.m4 763f898009aea9fa61c6134714e5d8982161b1e8 @@ -40,9 +40,9 @@ dnl GCC if test "$GXX" = "yes"; then if test -z "$ansi"; then - ac_cv_prog_cxx_warnings="-Wall" + ac_cv_prog_cxx_warnings="-Wall -W -Wno-unused" else - ac_cv_prog_cxx_warnings="-Wall -ansi -pedantic" + ac_cv_prog_cxx_warnings="-Wall -W -Wno-unused -ansi -pedantic" fi dnl Most compilers print some kind of a version string with some command ============================================================ --- netxx/peer.cxx 595a0c89aa5a9af5f44d98eba0e71ee80b572551 +++ netxx/peer.cxx 8840c1e7f828fd2cbb9b89b6180553babe3d27db @@ -156,22 +156,25 @@ union { sockaddr sa; - char data[const_max_sockaddr_size]; + sockaddr_in sin; +# ifndef NETXX_NO_INET6 + sockaddr_in6 sin6; +# endif } sau; int rc; - if ( (rc = getsockname(get_socketfd(), reinterpret_cast(sau.data), sa_size_ptr))) { + if ( (rc = getsockname(get_socketfd(), &sau.sa, sa_size_ptr))) { throw Exception(strerror(errno)); } switch (sau.sa.sa_family) { case AF_INET: - return ntohs(reinterpret_cast(&sau.sa)->sin_port); + return ntohs(sau.sin.sin_port); # ifndef NETXX_NO_INET6 case AF_INET6: - return ntohs(reinterpret_cast(&sau.sa)->sin6_port); + return ntohs(sau.sin6.sin6_port); # endif default: ============================================================ --- netxx/sockaddr.cxx 94a16c9fcdeeb685b2614919eea41bc058b98a93 +++ netxx/sockaddr.cxx d2d94fbec9c97a4263f541c44e17eec65b3d6459 @@ -98,7 +98,7 @@ if (port) sa_union_.sa_in.sin_port = htons(port); sa_size_ = sizeof(sa_union_.sa_in); - sa_ = reinterpret_cast(&(sa_union_.sa_in)); + sa_ = &sa_union_.sa; break; @@ -109,7 +109,7 @@ if (port) sa_union_.sa_in6.sin6_port = htons(port); sa_size_ = sizeof(sa_union_.sa_in6); - sa_ = reinterpret_cast(&(sa_union_.sa_in6)); + sa_ = &sa_union_.sa; break; # endif @@ -120,7 +120,7 @@ sa_union_.sa_un.sun_family = AF_LOCAL; sa_size_ = sizeof(sa_union_.sa_un); - sa_ = reinterpret_cast(&(sa_union_.sa_un)); + sa_ = &sa_union_.sa; break; # endif ============================================================ --- netxx/sockaddr.h 6c7db29369f681dc40484c73f6d848f9e7bd5137 +++ netxx/sockaddr.h 2f123a08f0a2bbba15a921709c9e8fed84e7c1f7 @@ -60,6 +60,7 @@ void setup (int af_type, port_type port); private: union { + sockaddr sa; sockaddr_in sa_in; # ifndef NETXX_NO_INET6