Francois Gouget : userenv/tests: Windows 10 1809 changed GetUserProfileDirectory().
Alexandre Julliard
julliard at winehq.org
Fri Nov 22 16:17:27 CST 2019
Module: wine
Branch: master
Commit: 8ec8a56a24dabc56d6a244268822e7bedc2fe785
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8ec8a56a24dabc56d6a244268822e7bedc2fe785
Author: Francois Gouget <fgouget at free.fr>
Date: Thu Nov 21 16:25:20 2019 +0100
userenv/tests: Windows 10 1809 changed GetUserProfileDirectory().
It is no longer possible to get the required buffer size in the ANSI
version, and the Unicode one requires a NULL buffer.
Signed-off-by: Francois Gouget <fgouget at free.fr>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/userenv/tests/userenv.c | 42 ++++++++++++++++++++++++++++++------------
1 file changed, 30 insertions(+), 12 deletions(-)
diff --git a/dlls/userenv/tests/userenv.c b/dlls/userenv/tests/userenv.c
index f6cfcc79ec..a91edeef26 100644
--- a/dlls/userenv/tests/userenv.c
+++ b/dlls/userenv/tests/userenv.c
@@ -303,7 +303,7 @@ static void test_get_profiles_dir(void)
static void test_get_user_profile_dir(void)
{
BOOL ret;
- DWORD error, len;
+ DWORD error, len, len2;
HANDLE token;
char *dirA;
WCHAR *dirW;
@@ -351,18 +351,23 @@ static void test_get_user_profile_dir(void)
ret = GetUserProfileDirectoryA( token, dirA, &len );
error = GetLastError();
ok(!ret, "expected failure\n");
- ok(error == ERROR_INSUFFICIENT_BUFFER, "expected ERROR_INSUFFICIENT_BUFFER, got %u\n", error);
- ok(len, "expected len > 0\n");
- HeapFree( GetProcessHeap(), 0, dirA );
-
- dirA = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, len );
- SetLastError( 0xdeadbeef );
- ret = GetUserProfileDirectoryA( token, dirA, &len );
- ok(ret, "expected success %u\n", GetLastError());
- ok(len, "expected len > 0\n");
- ok(lstrlenA( dirA ) == len - 1, "length mismatch %d != %d - 1\n", lstrlenA( dirA ), len );
- trace("%s\n", dirA);
HeapFree( GetProcessHeap(), 0, dirA );
+ if (error == ERROR_INSUFFICIENT_BUFFER)
+ {
+ ok(len, "expected len > 0\n");
+
+ dirA = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, len );
+ SetLastError( 0xdeadbeef );
+ ret = GetUserProfileDirectoryA( token, dirA, &len );
+ ok(ret, "expected success %u\n", GetLastError());
+ ok(len, "expected len > 0\n");
+ ok(lstrlenA( dirA ) == len - 1, "length mismatch %d != %d - 1\n", lstrlenA( dirA ), len );
+ trace("%s\n", dirA);
+ HeapFree( GetProcessHeap(), 0, dirA );
+ }
+ else
+ ok(broken(error == ERROR_INVALID_PARAMETER) /* win10 1809+ */,
+ "unexpected error %u\n", error);
SetLastError( 0xdeadbeef );
ret = GetUserProfileDirectoryW( NULL, NULL, NULL );
@@ -400,6 +405,19 @@ static void test_get_user_profile_dir(void)
ok(lstrlenW( dirW ) == len - 1, "length mismatch %d != %d - 1\n", lstrlenW( dirW ), len );
HeapFree( GetProcessHeap(), 0, dirW );
+ len2 = 0;
+ dirW = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, 32 * sizeof(WCHAR) );
+ SetLastError( 0xdeadbeef );
+ ret = GetUserProfileDirectoryW( token, dirW, &len2 );
+ error = GetLastError();
+ ok(!ret, "expected failure\n");
+ HeapFree( GetProcessHeap(), 0, dirW );
+ if (error == ERROR_INSUFFICIENT_BUFFER)
+ ok(len2 == len, "expected %d, got %d\n", len, len2);
+ else
+ ok(broken(error == ERROR_INVALID_PARAMETER) /* win10 1809+ */,
+ "unexpected error %u\n", error);
+
CloseHandle( token );
}
More information about the wine-cvs
mailing list