christos@ wrote:

> Module Name:  src
> Committed By: christos
> Date:         Thu Nov 13 17:19:29 UTC 2014
> 
> Modified Files:
>       src/sys/arch/atari/stand/installboot: installboot.c
> 
> Log Message:
> fix strict aliasing violations

> -     *((u_int16_t *)bb->bb_xxboot + 255) = 0;
> -     *((u_int16_t *)bb->bb_xxboot + 255) = 0x1234 - abcksum(bb->bb_xxboot);
> +     sum = 0;
> +     memcpy(bb->bb_xxboot + 255, &sum, sizeof(sum));
> +     sum = 0x1234 - abcksum(bb->bb_xxboot);
> +     memcpy(bb->bb_xxboot + 255, &sum, sizeof(sum));

I doubt your "bb->bb_xxboot + 255" is the same place
as the original "(u_int16_t *)bb->bb_xxboot + 255"
(the cksum word looks at the end of 512 byte sector).

memcpy(9) looks also awful for readers because it hides endianness..

---
Izumi Tsutsui

Reply via email to