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 */
Show replies by date