Juan Lang : setupapi: Set last error on failure in SetupDiOpenClassRegKeyExW.

Alexandre Julliard julliard at winehq.org
Mon Sep 24 08:07:59 CDT 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Fri Sep 21 11:33:05 2007 -0700

setupapi: Set last error on failure in SetupDiOpenClassRegKeyExW.

---

 dlls/setupapi/devinst.c |   42 +++++++++++++++++++++++-------------------
 1 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
index a91b120..c2644e2 100644
--- a/dlls/setupapi/devinst.c
+++ b/dlls/setupapi/devinst.c
@@ -2338,8 +2338,9 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
         PVOID Reserved)
 {
     HKEY hClassesKey;
-    HKEY hClassKey;
+    HKEY key;
     LPCWSTR lpKeyName;
+    LONG l;
 
     if (MachineName != NULL)
     {
@@ -2364,15 +2365,16 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
 
     if (!ClassGuid)
     {
-        if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+        if ((l = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
                           lpKeyName,
                           0,
                           samDesired,
-                          &hClassesKey))
+                          &hClassesKey)))
         {
-            return INVALID_HANDLE_VALUE;
+            SetLastError(l);
+            hClassesKey = INVALID_HANDLE_VALUE;
         }
-        return hClassesKey;
+        key = hClassesKey;
     }
     else
     {
@@ -2380,28 +2382,30 @@ HKEY WINAPI SetupDiOpenClassRegKeyExW(
 
         SETUPDI_GuidToString(ClassGuid, bracedGuidString);
 
-        if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+        if (!(l = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
                           lpKeyName,
                           0,
                           samDesired,
-                          &hClassesKey))
+                          &hClassesKey)))
         {
-            return INVALID_HANDLE_VALUE;
+            if ((l = RegOpenKeyExW(hClassesKey,
+                              bracedGuidString,
+                              0,
+                              samDesired,
+                              &key)))
+            {
+                SetLastError(l);
+                key = INVALID_HANDLE_VALUE;
+            }
+            RegCloseKey(hClassesKey);
         }
-        if (RegOpenKeyExW(hClassesKey,
-                          bracedGuidString,
-                          0,
-                          samDesired,
-                          &hClassKey))
+        else
         {
-            RegCloseKey(hClassesKey);
-            return INVALID_HANDLE_VALUE;
+            SetLastError(l);
+            key = INVALID_HANDLE_VALUE;
         }
-
-        RegCloseKey(hClassesKey);
-
-        return hClassKey;
     }
+    return key;
 }
 
 /***********************************************************************




More information about the wine-cvs mailing list