http://bugs.winehq.org/show_bug.cgi?id=33009
Bug #: 33009 Summary: Logical error in code isStateDirty Product: Wine Version: unspecified Platform: x86 OS/Version: Mac OS X Status: UNCONFIRMED Severity: major Priority: P2 Component: directx-d3d AssignedTo: wine-bugs@winehq.org ReportedBy: roman.marusyk@gmail.com Classification: Unclassified
wined3d_private.h have a static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state) .... (line 1792) return context->isStateDirty[idx] & (1 << shift);
sizeof(BOOL) is not always a 32bits
if someone compile and built only wined3d on macos BOOL is typedef char BOOL;
and code return x & (1 << shift) very bad for example return x & (1 << 24) is a return x & (0x01000000) if BOOL is typedef char , we have always return FALSE
anyway, better write return (context->isStateDirty[idx] & (1 << shift)) != 0;