22 Oct
2006
22 Oct
'06
8:23 a.m.
"Mike McCormack" <mike(a)codeweavers.com> wrote:
INT WINAPI GetClassNameA( HWND hwnd, LPSTR buffer, INT count ) { - INT ret = GlobalGetAtomNameA( GetClassLongA( hwnd, GCW_ATOM ), buffer, count ); + INT ret; + + ret = GlobalGetAtomNameA( GetClassLongA( hwnd, GCW_ATOM ), buffer, count ); + if (!ret && count) + ret = lstrlenA( buffer );
This won't work as expected if hwnd is invalid and buffer contains some '\0' terminated data. Probably a better aproach would be to call GlobalGetAtomNameA with a buffer of size MAX_ATOM_LEN + 1 allocated on the stack (MAX_ATOM_LEN is defined in dlls/kernel32/atom.c as 255) and only if the call succeeds copy the data. GetClassNameW neededs to be fixed as well. -- Dmitry.