From: Thomas Faber Date: Sat, 24 Feb 2018 13:15:48 +0000 (+0100) Subject: [SHLWAPI] Cherry-pick Wine commit 7be8beab68c (Don't attempt to un-expect ComputerNam... X-Git-Tag: 0.4.9-RC~745 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=af6c5806d5c1ba531a44b19e453c69108e84161d [SHLWAPI] Cherry-pick Wine commit 7be8beab68c (Don't attempt to un-expect ComputerName in PathUnExpandEnvStrings) by Katayama Hirofumi MZ. CORE-13816 --- diff --git a/dll/win32/shlwapi/path.c b/dll/win32/shlwapi/path.c index 342ef46e54d..94472580d94 100644 --- a/dll/win32/shlwapi/path.c +++ b/dll/win32/shlwapi/path.c @@ -4120,7 +4120,6 @@ BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR path, LPSTR buffer, UINT buf_len) static const WCHAR allusersprofileW[] = {'%','A','L','L','U','S','E','R','S','P','R','O','F','I','L','E','%',0}; static const WCHAR appdataW[] = {'%','A','P','P','D','A','T','A','%',0}; -static const WCHAR computernameW[] = {'%','C','O','M','P','U','T','E','R','N','A','M','E','%',0}; static const WCHAR programfilesW[] = {'%','P','r','o','g','r','a','m','F','i','l','e','s','%',0}; static const WCHAR systemrootW[] = {'%','S','y','s','t','e','m','R','o','o','t','%',0}; static const WCHAR systemdriveW[] = {'%','S','y','s','t','e','m','D','r','i','v','e','%',0}; @@ -4157,7 +4156,6 @@ BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR path, LPWSTR buffer, UINT buf_len) struct envvars_map envvars[] = { { allusersprofileW, sizeof(allusersprofileW)/sizeof(WCHAR) }, { appdataW, sizeof(appdataW)/sizeof(WCHAR) }, - { computernameW, sizeof(computernameW)/sizeof(WCHAR) }, { programfilesW, sizeof(programfilesW)/sizeof(WCHAR) }, { systemrootW, sizeof(systemrootW)/sizeof(WCHAR) }, { systemdriveW, sizeof(systemdriveW)/sizeof(WCHAR) }, diff --git a/modules/rostests/winetests/shlwapi/path.c b/modules/rostests/winetests/shlwapi/path.c index 6edafc6f9fb..78f90900693 100755 --- a/modules/rostests/winetests/shlwapi/path.c +++ b/modules/rostests/winetests/shlwapi/path.c @@ -1455,10 +1455,11 @@ static void test_PathUnExpandEnvStrings(void) static const WCHAR sysrootW[] = {'%','S','y','s','t','e','m','R','o','o','t','%',0}; static const WCHAR sysdriveW[] = {'%','S','y','s','t','e','m','D','r','i','v','e','%',0}; static const WCHAR nonpathW[] = {'p','a','t','h',0}; + static const WCHAR computernameW[] = {'C','O','M','P','U','T','E','R','N','A','M','E',0}; static const char sysrootA[] = "%SystemRoot%"; static const char sysdriveA[] = "%SystemDrive%"; - WCHAR pathW[MAX_PATH], buffW[MAX_PATH], sysdrvW[3]; - char path[MAX_PATH], buff[MAX_PATH], sysdrvA[3], envvarA[10]; + WCHAR pathW[MAX_PATH], buffW[MAX_PATH], sysdrvW[3], envvarW[30]; + char path[MAX_PATH], buff[MAX_PATH], sysdrvA[3], envvarA[30]; BOOL ret; UINT len; @@ -1468,6 +1469,19 @@ static void test_PathUnExpandEnvStrings(void) return; } + /* The value of ComputerName is not a path */ + ret = GetEnvironmentVariableA("COMPUTERNAME", envvarA, sizeof(envvarA)); + ok(ret, "got %d\n", ret); + SetLastError(0xdeadbeef); + ret = pPathUnExpandEnvStringsA(envvarA, buff, sizeof(buff)); + ok(!ret && GetLastError() == 0xdeadbeef, "got %d, error %d\n", ret, GetLastError()); + + ret = GetEnvironmentVariableW(computernameW, envvarW, sizeof(envvarW)/sizeof(WCHAR)); + ok(ret, "got %d\n", ret); + SetLastError(0xdeadbeef); + ret = pPathUnExpandEnvStringsW(envvarW, buffW, sizeof(buffW)/sizeof(WCHAR)); + ok(!ret && GetLastError() == 0xdeadbeef, "got %d, error %d\n", ret, GetLastError()); + /* something that can't be represented with env var */ strcpy(path, "somepath_name"); strcpy(buff, "xx");