user32: Implement BroadcastSystemMessage, try 5.1

Maarten Lankhorst m.b.lankhorst at gmail.com
Sun Mar 30 15:53:42 CDT 2008


Hello Alexandre,

2008/3/24, Alexandre Julliard <julliard at winehq.org>:
> "Maarten Lankhorst" <m.b.lankhorst at gmail.com> writes:
>
>  > +    TRACE("Flags: %08x, recipients: %p(0x%x), msg: %04x, wparam: %08lx, lparam: %08lx\n", flags, recipients,
>  > +         (recipients ? *recipients : recips), msg, wp, lp);
>  > +
>  > +    if (flags > BSF_LUID)
>
>  It doesn't make sense to compare flags with >. What are you trying to
>  check for?
>
>  > -}
>  > +    else
>  > +        FIXME("Recipients %08x not supported!\n", *recipients);
>  > +
>  > +    if (ret > 0 && !GetLastError())
>  > +        SetLastError(lasterror);
>
>  In general if you have to save and restore last error you are doing
>  something wrong.
Or wine is doing something wrong. After some more digging I found that
SetLastError() was set to 0 by TlsGetValue when called from X11DRV's
MsgWaitForMultipleObjectsEx. After I tried fixing this so that
SetLastError is only set when NULL is returned, one of the other tests
miraculously started working inside a todo block too (cursoricon).
I'll work on some testcases to verify that tlsgetvalue only calls
SetLastError(0) when succesfully returning null.

Cheers,
Maarten.



More information about the wine-devel mailing list