d3d8: Adjust D3DCOLOR_ARGB to avoid shift overflow.
Gerald Pfeifer
gerald at pfeifer.com
Fri Oct 16 16:02:24 CDT 2015
On Mon, 14 Sep 2015, Stefan Dösinger wrote:
> Am 2015-09-13 um 22:56 schrieb Gerald Pfeifer:
>> -#define D3DCOLOR_ARGB(a,r,g,b) ((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
>> +#define D3DCOLOR_ARGB(a,r,g,b) ((D3DCOLOR)((((a)&0xffu)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
> Wouldn't it make sense to make the masks for the other channels unsigned
> too?
We could make all unsigned. The problem here only is with the first
since the <<24 may lead to an overflow of signed, but you have a good
point that consistency may be better.
I'll submit a patch shortly.
> Are there any possible side effects when compiling code with winelib?
> The native header uses a signed 0xff.
I can't think of one, since the & and | operators are bitwise, as is
the shift.
Thanks for the feedback, and sorry for the slow response now.
Gerald
More information about the wine-devel
mailing list