James Hawkins : msi: Return ERROR_UNKNOWN_COMPONENT if no products exist.

Alexandre Julliard julliard at winehq.org
Mon Dec 17 06:41:50 CST 2007


Module: wine
Branch: master
Commit: 88d51ad12280dffee3fad6a6002524e2436c6896
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=88d51ad12280dffee3fad6a6002524e2436c6896

Author: James Hawkins <truiken at gmail.com>
Date:   Sun Dec 16 20:29:36 2007 -0600

msi: Return ERROR_UNKNOWN_COMPONENT if no products exist.

---

 dlls/msi/registry.c  |    9 +++++++++
 dlls/msi/tests/msi.c |   10 ++--------
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/dlls/msi/registry.c b/dlls/msi/registry.c
index 7423658..c80247a 100644
--- a/dlls/msi/registry.c
+++ b/dlls/msi/registry.c
@@ -1321,6 +1321,15 @@ UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent, DWORD index, LPWSTR szProduct)
         MSIREG_OpenLocalSystemComponentKey(szComponent, &hkeyComp, FALSE) != ERROR_SUCCESS)
         return ERROR_UNKNOWN_COMPONENT;
 
+    /* see if there are any products at all */
+    sz = SQUISH_GUID_SIZE;
+    r = RegEnumValueW(hkeyComp, 0, szValName, &sz, NULL, NULL, NULL, NULL);
+    if (r != ERROR_SUCCESS)
+    {
+        RegCloseKey(hkeyComp);
+        return ERROR_UNKNOWN_COMPONENT;
+    }
+
     sz = SQUISH_GUID_SIZE;
     r = RegEnumValueW(hkeyComp, index, szValName, &sz, NULL, NULL, NULL, NULL);
     if( r == ERROR_SUCCESS )
diff --git a/dlls/msi/tests/msi.c b/dlls/msi/tests/msi.c
index d85d972..c46d651 100644
--- a/dlls/msi/tests/msi.c
+++ b/dlls/msi/tests/msi.c
@@ -1643,10 +1643,7 @@ static void test_MsiEnumClients(void)
     /* user unmanaged component key exists */
     product[0] = '\0';
     r = MsiEnumClientsA(component, 0, product);
-    todo_wine
-    {
-        ok(r == ERROR_UNKNOWN_COMPONENT, "Expected ERROR_UNKNOWN_COMPONENT, got %d\n", r);
-    }
+    ok(r == ERROR_UNKNOWN_COMPONENT, "Expected ERROR_UNKNOWN_COMPONENT, got %d\n", r);
     ok(!lstrcmpA(product, ""), "Expected product to be unchanged, got %s\n", product);
 
     /* index > 0, no products exist */
@@ -1719,10 +1716,7 @@ static void test_MsiEnumClients(void)
     /* user local component key exists */
     product[0] = '\0';
     r = MsiEnumClientsA(component, 0, product);
-    todo_wine
-    {
-        ok(r == ERROR_UNKNOWN_COMPONENT, "Expected ERROR_UNKNOWN_COMPONENT, got %d\n", r);
-    }
+    ok(r == ERROR_UNKNOWN_COMPONENT, "Expected ERROR_UNKNOWN_COMPONENT, got %d\n", r);
     ok(!lstrcmpA(product, ""), "Expected product to be unchanged, got %s\n", product);
 
     /* index > 0, no products exist */




More information about the wine-cvs mailing list