[Bug 51899] 16-bit Collins Dictionary has black background.
WineHQ Bugzilla
wine-bugs at winehq.org
Sat Oct 23 14:25:03 CDT 2021
https://bugs.winehq.org/show_bug.cgi?id=51899
--- Comment #12 from Bruni <earns.61 at gmail.com> ---
I've realized my previous comment contains a mistake.
> So in if ((x && y) || !z) { body } expression,
> it's enough for both x and y to be true or for z to be false to execute if's body.
> So z can be split into separate if, which can be placed after original if, copying its body.
> Which results in
> if (x && y) { body }
> if (!z) { body }
> In if (x && y) { body } expression,
> it's enough for x to be false to not execute if's body.
> And one can immediately return in our case, where if's body is the last block before `return`.
> So one can decompose it as follows
> if (!x) return
> if (y) { body }
> if (!z) { body }
Even if `x` is false, execution framework cannot leave the whole test
expression until z is testified.
So `x` can be split from `y` only with testifying `z`
So get_dc_attr function body must be as follows.
DC_ATTR *get_dc_attr( HDC hdc )
{
DWORD handle_type_bit_mask = 0x1f0000;
DWORD type = gdi_handle_type( hdc );
DC_ATTR *dc_attr = get_gdi_client_ptr( hdc, 0 );
if (!type && dc_attr)
return dc_attr->disabled ? NULL : dc_attr;
if ((type & handle_type_bit_mask) != NTGDI_OBJ_DC)
{
SetLastError( ERROR_INVALID_HANDLE );
return NULL;
}
if (!dc_attr)
{
SetLastError( ERROR_INVALID_HANDLE );
return NULL;
}
return dc_attr->disabled ? NULL : dc_attr;
}
This variant looks correct to me.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list