[SHLWAPI] Cherry-pick Wine commit 7be8beab68c (Don't attempt to un-expect ComputerNam...
authorThomas Faber <thomas.faber@reactos.org>
Sat, 24 Feb 2018 13:15:48 +0000 (14:15 +0100)
committerThomas Faber <thomas.faber@reactos.org>
Sat, 24 Feb 2018 13:18:29 +0000 (14:18 +0100)
dll/win32/shlwapi/path.c
modules/rostests/winetests/shlwapi/path.c

index 342ef46..9447258 100644 (file)
@@ -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)     },
index 6edafc6..78f9090 100755 (executable)
@@ -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");