Re: gdi32: use HandleToULong inline function to convert handle to index instead of casting
Daniel Lehman <dlehman(a)esri.com> wrote:
0xffffffff000026a8 becomes 0xc00009aa instead of just 0x9aa
It can't, the code explicitly casts handle to unsigned before the shift. -- Dmitry.
It can't, the code explicitly casts handle to unsigned before the shift.
It's cast to a 64-bit unsigned, so the upper 32 bits are kept for the shift One of the pointers passed in was: 0xffffff000026a8 after the shift, it became: 0xffffff000026a8 => 0x3fffffc00009aa When assigned to the 32-bit i, the upper 32 bits were clipped out: 0x3fffffc00009aa => 0xc00009aa The HandleToUlong() has an additional cast to ULONG32 that drops the upper 32 bits before the shift. Alternatively, I could have just added the cast but I noticed that macro was used elsewhere when converting handles I'll admit that the upper 32 bits being set was because of a quirk in our C++ code, but similar values passed to Windows worked Thanks daniel
Daniel Lehman <dlehman(a)esri.com> writes:
I'll admit that the upper 32 bits being set was because of a quirk in our C++ code, but similar values passed to Windows worked
This would need some test cases. -- Alexandre Julliard julliard(a)winehq.org
participants (3)
-
Alexandre Julliard -
Daniel Lehman -
Dmitry Timoshkov