msi: Expand REG_EXPAND_SZ registry values in the RegLocator table.
authorJames Hawkins <jhawkins@codeweavers.com>
Mon, 13 Oct 2008 08:57:40 +0000 (03:57 -0500)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 13 Oct 2008 11:00:47 +0000 (13:00 +0200)
dlls/msi/appsearch.c
dlls/msi/tests/package.c

index e013b58..ed02f83 100644 (file)
@@ -245,7 +245,6 @@ static void ACTION_ConvertRegValue(DWORD regType, const BYTE *value, DWORD sz,
  LPWSTR *appValue)
 {
     static const WCHAR dwordFmt[] = { '#','%','d','\0' };
-    static const WCHAR expandSzFmt[] = { '#','%','%','%','s','\0' };
     static const WCHAR binFmt[] = { '#','x','%','x','\0' };
     DWORD i;
 
@@ -273,9 +272,9 @@ static void ACTION_ConvertRegValue(DWORD regType, const BYTE *value, DWORD sz,
             sprintfW(*appValue, dwordFmt, *(const DWORD *)value);
             break;
         case REG_EXPAND_SZ:
-            /* space for extra #% characters in front */
-            *appValue = msi_alloc(sz + 2 * sizeof(WCHAR));
-            sprintfW(*appValue, expandSzFmt, (LPCWSTR)value);
+            sz = ExpandEnvironmentStringsW((LPCWSTR)value, NULL, 0);
+            *appValue = msi_alloc(sz * sizeof(WCHAR));
+            ExpandEnvironmentStringsW((LPCWSTR)value, *appValue, sz);
             break;
         case REG_BINARY:
             /* 3 == length of "#x<nibble>" */
index b2a3cf4..31f5ad6 100644 (file)
@@ -6318,19 +6318,13 @@ static void test_appsearch_reglocator(void)
     size = MAX_PATH;
     r = MsiGetPropertyA(hpkg, "SIGPROP4", prop, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    todo_wine
-    {
-        ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
-    }
+    ok(!lstrcmpA(prop, path), "Expected \"%s\", got \"%s\"\n", path, prop);
 
     size = MAX_PATH;
     r = MsiGetPropertyA(hpkg, "SIGPROP5", prop, &size);
     ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
-    todo_wine
-    {
-        ok(!lstrcmpA(prop,
-           "my%NOVAR%"), "Expected \"my%%NOVAR%%\", got \"%s\"\n", prop);
-    }
+    ok(!lstrcmpA(prop,
+       "my%NOVAR%"), "Expected \"my%%NOVAR%%\", got \"%s\"\n", prop);
 
     size = MAX_PATH;
     r = MsiGetPropertyA(hpkg, "SIGPROP6", prop, &size);