diff options
-rw-r--r-- | c/src/ChangeLog | 4 | ||||
-rw-r--r-- | c/src/libchip/network/smc91111.c | 13 |
2 files changed, 12 insertions, 5 deletions
diff --git a/c/src/ChangeLog b/c/src/ChangeLog index ae847f0a85..4ea664549a 100644 --- a/c/src/ChangeLog +++ b/c/src/ChangeLog @@ -1,3 +1,7 @@ +2006-01-12 Eric Norum <norume@aps.anl.gov> + + * libchip/network/smc91111.c: Fix illegial lvalue increments + 2006-01-12 Ralf Corsepius <ralf.corsepius@rtems.org> * wrapup/Makefile.am: Add preinstall.am. diff --git a/c/src/libchip/network/smc91111.c b/c/src/libchip/network/smc91111.c index 911f9a922b..660895bfc5 100644 --- a/c/src/libchip/network/smc91111.c +++ b/c/src/libchip/network/smc91111.c @@ -192,7 +192,8 @@ static void lan91cxx_recv(struct lan91cxx_priv_data *cpd, struct mbuf *m) start = (char *)data; mlen = n->m_len; if ((data) && (mlen > 1)) { - *((unsigned short *)data)++ = (val & 0xffff); + *(unsigned short *)data = (val & 0xffff); + data = (rxd_t *)((unsigned short *)data + 1); plen -= 2; mlen -= 2; } @@ -213,9 +214,10 @@ static void lan91cxx_recv(struct lan91cxx_priv_data *cpd, struct mbuf *m) while (mlen >= sizeof(*data)) { #ifdef LAN91CXX_32BIT_RX val = get_data(cpd); - *((unsigned short *)data)++ = - (val >> 16) & 0xffff; - *((unsigned short *)data)++ = (val & 0xffff); + *(unsigned short *)data = (val >> 16) & 0xffff; + data = (rxd_t *)((unsigned short *)data + 1); + *(unsigned short *)data = (val & 0xffff); + data = (rxd_t *)((unsigned short *)data + 1); #else *data++ = get_data(cpd); #endif @@ -250,7 +252,8 @@ static void lan91cxx_recv(struct lan91cxx_priv_data *cpd, struct mbuf *m) #ifdef LAN91CXX_32BIT_RX if (plen & 2) { if (data) { - *((unsigned short *)data)++ = (val >> 16) & 0xffff; + *(unsigned short *)data = (val >> 16) & 0xffff; + data = (rxd_t *)((unsigned short *)data + 1); val <<= 16; } } |