Andrew Eikum : ole32: Only fail on missing Implemented Categories key if we actually have categories to check .

Alexandre Julliard julliard at winehq.org
Mon May 3 11:54:06 CDT 2010


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

Author: Andrew Eikum <aeikum at codeweavers.com>
Date:   Fri Apr 30 18:03:05 2010 -0500

ole32: Only fail on missing Implemented Categories key if we actually have categories to check.

---

 dlls/ole32/comcat.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/dlls/ole32/comcat.c b/dlls/ole32/comcat.c
index b8060bd..fe0f7e5 100644
--- a/dlls/ole32/comcat.c
+++ b/dlls/ole32/comcat.c
@@ -232,18 +232,20 @@ static HRESULT COMCAT_IsClassOfCategories(
     LPCWSTR string;
 
     /* Check that every given category is implemented by class. */
-    res = RegOpenKeyExW(key, impl_keyname, 0, KEY_READ, &subkey);
-    if (res != ERROR_SUCCESS) return S_FALSE;
-    for (string = categories->impl_strings; *string; string += 39) {
-	HKEY catkey;
-	res = RegOpenKeyExW(subkey, string, 0, 0, &catkey);
-	if (res != ERROR_SUCCESS) {
-	    RegCloseKey(subkey);
-	    return S_FALSE;
+    if (*categories->impl_strings) {
+	res = RegOpenKeyExW(key, impl_keyname, 0, KEY_READ, &subkey);
+	if (res != ERROR_SUCCESS) return S_FALSE;
+	for (string = categories->impl_strings; *string; string += 39) {
+	    HKEY catkey;
+	    res = RegOpenKeyExW(subkey, string, 0, 0, &catkey);
+	    if (res != ERROR_SUCCESS) {
+		RegCloseKey(subkey);
+		return S_FALSE;
+	    }
+	    RegCloseKey(catkey);
 	}
-	RegCloseKey(catkey);
+	RegCloseKey(subkey);
     }
-    RegCloseKey(subkey);
 
     /* Check that all categories required by class are given. */
     res = RegOpenKeyExW(key, req_keyname, 0, KEY_READ, &subkey);




More information about the wine-cvs mailing list