hopefully fix something in CreateClassKey
Modified: trunk/reactos/lib/setupapi/devinst.c

Modified: trunk/reactos/lib/setupapi/devinst.c
--- trunk/reactos/lib/setupapi/devinst.c	2005-07-04 21:46:20 UTC (rev 16414)
+++ trunk/reactos/lib/setupapi/devinst.c	2005-07-04 21:54:36 UTC (rev 16415)
@@ -20,7 +20,7 @@
 
 #include "config.h"
 #include "wine/port.h"
- 
+
 #include <stdarg.h>
 
 #include "windef.h"
@@ -1302,30 +1302,26 @@
 			   MAX_PATH - 1,
 			   &RequiredSize))
     {
-	return INVALID_HANDLE_VALUE;
+        return INVALID_HANDLE_VALUE;
     }
 
     lstrcpyW(FullBuffer, ControlClass);
     lstrcatW(FullBuffer, Buffer);
 
-    if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
-		      FullBuffer,
-		      0,
-		      KEY_ALL_ACCESS,
-		      &hClassKey))
-    {
-	if (!SetupGetLineTextW(NULL,
+
+    if (!SetupGetLineTextW(NULL,
 			       hInf,
 			       Version,
 			       Class,
 			       Buffer,
 			       MAX_PATH,
 			       &RequiredSize))
-	{
-	    return INVALID_HANDLE_VALUE;
-	}
+    {
+        RegDeleteKeyW(HKEY_LOCAL_MACHINE, FullBuffer);
+        return INVALID_HANDLE_VALUE;
+    }
 
-	if (RegCreateKeyExW(HKEY_LOCAL_MACHINE,
+    if (ERROR_SUCCESS != RegCreateKeyExW(HKEY_LOCAL_MACHINE,
 			    FullBuffer,
 			    0,
 			    NULL,
@@ -1333,24 +1329,22 @@
 			    KEY_ALL_ACCESS,
 			    NULL,
 			    &hClassKey,
-			    NULL))
-	{
-	    return INVALID_HANDLE_VALUE;
-	}
-
+             NULL))
+    {
+        RegDeleteKeyW(HKEY_LOCAL_MACHINE, FullBuffer);
+        return INVALID_HANDLE_VALUE;
     }
 
-    if (RegSetValueExW(hClassKey,
+    if (ERROR_SUCCESS != RegSetValueExW(hClassKey,
 		       Class,
 		       0,
 		       REG_SZ,
 		       (LPBYTE)Buffer,
-		       RequiredSize * sizeof(WCHAR)))
+             RequiredSize * sizeof(WCHAR)))
     {
-	RegCloseKey(hClassKey);
-	RegDeleteKeyW(HKEY_LOCAL_MACHINE,
-		      FullBuffer);
-	return INVALID_HANDLE_VALUE;
+        RegCloseKey(hClassKey);
+        RegDeleteKeyW(HKEY_LOCAL_MACHINE, FullBuffer);
+        return INVALID_HANDLE_VALUE;
     }
 
     return hClassKey;
@@ -1397,6 +1391,7 @@
 	SetupCloseInfFile(hInf);
 	return FALSE;
     }
+    RegCloseKey(hClassKey);
 
 
     /* Try to append a layout file */