Commit fecde1ea authored by Owen Rudge's avatar Owen Rudge Committed by Alexandre Julliard

user32: Return Unicode length instead of ANSI in GetUserObjectInformationA.

parent 83f67ff9
......@@ -397,7 +397,7 @@ static void test_getuserobjectinformation(void)
ok(!ret, "GetUserObjectInformationA returned %x", ret);
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "LastError is set to %08x\n", GetLastError());
todo_wine ok(size == 22, "size is set to %d\n", size); /* Windows returns Unicode length (11*2) */
ok(size == 22, "size is set to %d\n", size); /* Windows returns Unicode length (11*2) */
/* Get string */
SetLastError(0xdeadbeef);
......@@ -439,7 +439,7 @@ static void test_getuserobjectinformation(void)
ok(!ret, "GetUserObjectInformationA returned %x", ret);
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "LastError is set to %08x\n", GetLastError());
todo_wine ok(size == 16, "size is set to %d\n", size); /* Windows returns Unicode length (8*2) */
ok(size == 16, "size is set to %d\n", size); /* Windows returns Unicode length (8*2) */
/* Get string */
SetLastError(0xdeadbeef);
......
......@@ -477,13 +477,17 @@ BOOL WINAPI GetUserObjectInformationA( HANDLE handle, INT index, LPVOID info, DW
if (index == UOI_TYPE || index == UOI_NAME)
{
WCHAR buffer[MAX_PATH];
DWORD lenA;
DWORD lenA, lenW;
if (!GetUserObjectInformationW( handle, index, buffer, sizeof(buffer), NULL )) return FALSE;
if (!GetUserObjectInformationW( handle, index, buffer, sizeof(buffer), &lenW )) return FALSE;
lenA = WideCharToMultiByte( CP_ACP, 0, buffer, -1, NULL, 0, NULL, NULL );
if (needed) *needed = lenA;
if (lenA > len)
{
/* If the buffer length supplied by the caller is insufficient, Windows returns a
'needed' length based upon the Unicode byte length, so we should do similarly. */
if (needed) *needed = lenW;
SetLastError( ERROR_INSUFFICIENT_BUFFER );
return FALSE;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment