General gcc4.0 porting guide

Hans de Goede j.w.r.degoede at hhs.nl
Fri Apr 29 15:08:01 UTC 2005



Ignacio Vazquez-Abrams wrote:
> On Fri, 2005-04-29 at 15:32 +0200, Matthias Saou wrote: 
> 
>>Hmmm, so I guess the patch I've made for libmpeg3 is wrong. What would the
>>proper fix for this be, then?
>>
>>      *((unsigned short*)data)++ = \
>>               ((CLIP(r_l) & 0xf8) << 8) | \
>>               ((CLIP(g_l) & 0xfc) << 3) | \
>>               ((CLIP(b_l) & 0xf8) >> 3);
> 
> 
> Possibly:
> 
>       *((unsigned short*)data) = \
>                ((CLIP(r_l) & 0xf8) << 8) | \
>                ((CLIP(g_l) & 0xfc) << 3) | \
>                ((CLIP(b_l) & 0xf8) >> 3);
>       data += sizeof(unsigned short) / sizeof(*data);
> 
> or:
> 
>       register unsigned short newdata = \
>                ((CLIP(r_l) & 0xf8) << 8) | \
>                ((CLIP(g_l) & 0xfc) << 3) | \
>                ((CLIP(b_l) & 0xf8) >> 3);
>       data++ = (unsigned char)((newdata >> 8) & 0xff);
>       data++ = (unsigned char)(newdata & 0xff);
> 

this assumes MSB endianness (so won't work on intel) and that data is a 
(unsigned) char *, which has not been stated. Also you probably mean 
"*data++ =" not "data++ ="

Regards,


Hans




More information about the fedora-extras-list mailing list