Index: raster.c =================================================================== --- raster.c (revision 4533) +++ raster.c (working copy) @@ -564,11 +564,7 @@ cups_raster_read_header(cups_raster_t *r) /* I - Raster stream */ { int len; /* Number of words to swap */ - union swap_s /* Swapping structure */ - { - unsigned char b[4]; - unsigned v; - } *s; + unsigned *s; /* Swapping pointer */ if (r == NULL || r->mode != CUPS_RASTER_READ) @@ -597,10 +593,13 @@ */ if (r->sync == CUPS_RASTER_REVSYNC || r->sync == CUPS_RASTER_REVSYNCv1) - for (len = 74, s = (union swap_s *)&(r->header.AdvanceDistance); + for (len = 74, s = (unsigned *)&(r->header.AdvanceDistance); len > 0; len --, s ++) - s->v = (((((s->b[0] << 8) | s->b[1]) << 8) | s->b[2]) << 8) | s->b[3]; + *s = (((*s << 24) & 0xFF000000) | + ((*s << 8) & 0x00FF0000) | + ((*s >> 8) & 0x0000FF00) | + ((*s >> 24) & 0x000000FF)); /* * Update the header and row count...