Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48471 Signed-off-by: Vladimir Panteleev git@vladimir.panteleev.md --- dlls/kernelbase/process.c | 3 ++- dlls/kernelbase/tests/process.c | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c index 788f03f220..612b0b2a2f 100644 --- a/dlls/kernelbase/process.c +++ b/dlls/kernelbase/process.c @@ -1276,7 +1276,8 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetEnvironmentVariableW( LPCWSTR name, LPWSTR val len = us_value.Length / sizeof(WCHAR); if (status == STATUS_BUFFER_TOO_SMALL) return len + 1; if (!set_ntstatus( status )) return 0; - if (size) val[len] = 0; + if (!size) return len + 1; + val[len] = 0; return len; }
diff --git a/dlls/kernelbase/tests/process.c b/dlls/kernelbase/tests/process.c index 24ab2c4b71..55d96d8659 100644 --- a/dlls/kernelbase/tests/process.c +++ b/dlls/kernelbase/tests/process.c @@ -31,13 +31,17 @@ static BOOL (WINAPI *pSetEnvironmentVariableW)(LPCWSTR, LPCWSTR);
static void test_GetEnvironmentVariableW(void) { - DWORD gle; + DWORD gle, ret;
pSetEnvironmentVariableW(L"TESTVAR", L"abc"); SetLastError(0xdeadbeef); pGetEnvironmentVariableW(L"TESTVAR", NULL, 0); gle = GetLastError(); ok(gle == 0xdeadbeef, "got %d\n", gle); + + pSetEnvironmentVariableW(L"TESTVAR", L""); + ret = pGetEnvironmentVariableW(L"TESTVAR", NULL, 0); + ok(ret == 1, "got %d\n", ret); }
START_TEST(process)