diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2011-11-30 06:58:36 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2011-11-30 06:58:36 +0000 |
commit | f80b3a3d825110b5d8826f72db3fa47a6d71b66a (patch) | |
tree | 445adc7972a781fc1ed03182f58c63c30819327b /cpukit/librpc | |
parent | 2011-11-30 Ralf Corsépius <ralf.corsepius@rtems.org> (diff) | |
download | rtems-f80b3a3d825110b5d8826f72db3fa47a6d71b66a.tar.bz2 |
2011-11-30 Ralf Corsépius <ralf.corsepius@rtems.org>
* librpc/src/rpc/clnt_udp.c (struct cu_data):
Introduce unions _cu_inbuf, _cu_outbuf to avoid aliasing.
Diffstat (limited to 'cpukit/librpc')
-rw-r--r-- | cpukit/librpc/src/rpc/clnt_udp.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/cpukit/librpc/src/rpc/clnt_udp.c b/cpukit/librpc/src/rpc/clnt_udp.c index aeace640a8..369da95f2d 100644 --- a/cpukit/librpc/src/rpc/clnt_udp.c +++ b/cpukit/librpc/src/rpc/clnt_udp.c @@ -88,9 +88,17 @@ struct cu_data { XDR cu_outxdrs; u_int cu_xdrpos; u_int cu_sendsz; /* send size */ - char *cu_outbuf; + union { + u_int32_t *i32; + char *c; + } _cu_outbuf; +#define cu_outbuf _cu_outbuf.c u_int cu_recvsz; /* recv size */ - char cu_inbuf[1]; + union { + u_int32_t *i32; + char c[1]; + } _cu_inbuf; +#define cu_inbuf _cu_inbuf.c }; /* @@ -352,7 +360,7 @@ send_again: if (inlen < sizeof(u_int32_t)) continue; /* see if reply transaction id matches sent id */ - if (*((u_int32_t *)(cu->cu_inbuf)) != *((u_int32_t *)(cu->cu_outbuf))) + if (*(cu->_cu_inbuf.i32) != *(cu->_cu_outbuf.i32)) continue; /* we now assume we have the proper reply */ break; |