user32: Return Unicode length instead of ANSI in GetUserObjectInformationA.
This commit is contained in:
parent
83f67ff998
commit
fecde1ead8
|
@ -397,7 +397,7 @@ static void test_getuserobjectinformation(void)
|
||||||
|
|
||||||
ok(!ret, "GetUserObjectInformationA returned %x", ret);
|
ok(!ret, "GetUserObjectInformationA returned %x", ret);
|
||||||
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "LastError is set to %08x\n", GetLastError());
|
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 */
|
/* Get string */
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
|
@ -439,7 +439,7 @@ static void test_getuserobjectinformation(void)
|
||||||
|
|
||||||
ok(!ret, "GetUserObjectInformationA returned %x", ret);
|
ok(!ret, "GetUserObjectInformationA returned %x", ret);
|
||||||
ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "LastError is set to %08x\n", GetLastError());
|
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 */
|
/* Get string */
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
|
|
|
@ -477,13 +477,17 @@ BOOL WINAPI GetUserObjectInformationA( HANDLE handle, INT index, LPVOID info, DW
|
||||||
if (index == UOI_TYPE || index == UOI_NAME)
|
if (index == UOI_TYPE || index == UOI_NAME)
|
||||||
{
|
{
|
||||||
WCHAR buffer[MAX_PATH];
|
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 );
|
lenA = WideCharToMultiByte( CP_ACP, 0, buffer, -1, NULL, 0, NULL, NULL );
|
||||||
if (needed) *needed = lenA;
|
if (needed) *needed = lenA;
|
||||||
if (lenA > len)
|
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 );
|
SetLastError( ERROR_INSUFFICIENT_BUFFER );
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue