user32/gdi32: Fix for a crash in create_alpha_bitmap()

Peter Schlaile peter at
Mon Jan 31 06:18:22 CST 2011

Hi Alexandre,

On Mon, 31 Jan 2011, Alexandre Julliard wrote:

> Peter Schlaile <peter at> writes:
>> Fix: X11DRV_SetDIBits() shouldn't silently change Bitmap protection, so
>>  we now restore the protection bits, that were present before instead of
>>  always changing to READONLY.
> No, it needs to be read-only so that we can detect further changes.

so: what is your proposal to fix the problem?

At least, wine reacts very differently than windows here :)
Read: it crashes the application I mentioned in my previous mail:

And: from a design perspective it sounds very strange that a fast track 
optimisation *silently* changes protection bits!

That wouldn't be a problem, if windows behaved exactly the same way.
(which it most likely does not, otherwise PNClient wouldn't crash, 

And: my problem is, that I already spent three days in tracking this bug
down, so, I'm not sure, if I find the time to write test code, that will 
demonstrate the difference between windows and wine.

Should we move to bug tracker then?

>> Additional minor fix: bmi_has_alpha() tests for alpha channel != 0, but
>>  should test for alpha channel != 255.
> No it shouldn't, 0 is correct.

Are you sure? 0 means: everything is transparent, and that sounds like: we 
need an alpha channel, right?

Don't get me wrong, if windows behaves like that, it's ok for me, too, but 
that really sounds strange.


Peter Schlaile

More information about the wine-devel mailing list