[PATCH] ntdll: Workaround for requesting thread affinity mask that isn't a subset of the system's mask

Roger Zoellner zoellner.roger at gmail.com
Sun Sep 9 09:12:02 CDT 2018


I've created a test case that shows, that Wine indeed behaves incorrectly
when the highest bit of the requested mask is set.
With the (obvious) exception of ~0u, Wine returns STATUS_INVALID_PARAMETER
while Windows returns 0 (SUCCESS).

You're right. Casting to LONG is probably wrong here.

Am So., 9. Sep. 2018 um 10:31 Uhr schrieb Chris Robinson <
chris.kcat at gmail.com>:

> On 09/08/2018 06:26 AM, Roger Zoellner wrote:
> >               if ((ULONG)req_aff == ~0u) req_aff = affinity_mask;
> > +            else if ((LONG) req_aff < 0) req_aff = affinity_mask &
> req_aff;
>
> In addition to Dmitry's comment, it's notable that these two cases
> basically become the same thing. ~0u is -1, which would make req_aff a
> full mask. Though it may also be worth a test if the sign check actually
> applies to LONG_PTR instead of LONG, since LONG_PTR is 64-bit on 64-bit
> targets while LONG is 32-bit even on 64-bit targets.
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20180909/f2b74c37/attachment.html>


More information about the wine-devel mailing list