shdocvw: Rewrite code to make more understandable (Coverity).
authorMarcus Meissner <meissner@suse.de>
Wed, 2 Mar 2011 11:30:04 +0000 (12:30 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 2 Mar 2011 11:30:04 +0000 (12:30 +0100)
dlls/shdocvw/shlinstobj.c

index d272c91d3bce95d79bc420c8bf3b6a977ae3ca59..63bf0e6c1362bd1632a88c54dc36012ef185fa90 100644 (file)
@@ -375,16 +375,15 @@ HRESULT SHDOCVW_GetShellInstanceObjectClassObject(REFCLSID rclsid, REFIID riid,
           ppvClassObj);
 
     /* Figure if there is an 'Instance' subkey for the given CLSID and acquire a handle. */
-    if (!StringFromGUID2(rclsid, wszInstanceKey + 6, CHARS_IN_GUID) ||
-        !(wszInstanceKey[5+CHARS_IN_GUID]='\\') || /* Repair the null-termination. */
-        ERROR_SUCCESS != RegOpenKeyExW(HKEY_CLASSES_ROOT, wszInstanceKey, 0, KEY_READ, &hInstanceKey))
-    {
+    if (!StringFromGUID2(rclsid, wszInstanceKey + 6, CHARS_IN_GUID))
+        return CLASS_E_CLASSNOTAVAILABLE;
+    wszInstanceKey[5+CHARS_IN_GUID] = '\\'; /* Repair the null-termination. */
+    if (ERROR_SUCCESS != RegOpenKeyExW(HKEY_CLASSES_ROOT, wszInstanceKey, 0, KEY_READ, &hInstanceKey))
         /* If there is no 'Instance' subkey, then it's not a Shell Instance Object. */
         return CLASS_E_CLASSNOTAVAILABLE;
-    }
 
-    if (RegQueryValueExW(hInstanceKey, wszCLSID, NULL, &dwType, (LPBYTE)wszCLSIDInstance, &cbBytes)
-        != ERROR_SUCCESS || FAILED(CLSIDFromString(wszCLSIDInstance, &clsidInstance)))
+    if (ERROR_SUCCESS != RegQueryValueExW(hInstanceKey, wszCLSID, NULL, &dwType, (LPBYTE)wszCLSIDInstance, &cbBytes) ||
+        FAILED(CLSIDFromString(wszCLSIDInstance, &clsidInstance)))
     {
         /* 'Instance' should have a 'CLSID' value with a well-formed clsid-string. */
         FIXME("Failed to infer instance CLSID! %s\n", debugstr_w(wszCLSIDInstance));