On 04/25/2014 02:18 PM, Dmitry Timoshkov wrote:
Piotr Caban piotr.caban@gmail.com wrote:
On 04/25/14 13:34, Qian Hong wrote:
- atom = result;
- if(atom != result)
return E_FAIL;
I can't understand these few lines, are they typo or did I miss anything?
result and atom has different size. This code checks if LRESULT describes atom or error.
GlobalGetAtomNameW should handle this just fine, 'atom' is a misleading intermediate variable IMO.
No, it's not handling it.
Why? Are there any casts in the way that break this?
It can happen that cast from an error code is a valid atom.
In that case a simple test for HIWORD(result) would look less convoluted.
In principle that is correct but you cannot use HIWORD on a 64 bit integer. You'll need something like IS_INTATOM from kernel32 / ntdll.
bye michael