[MKHIVE] Implement and use RegCloseKey().
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 13 Oct 2018 22:29:04 +0000 (00:29 +0200)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sun, 14 Oct 2018 13:59:41 +0000 (15:59 +0200)
sdk/tools/mkhive/mkhive.h
sdk/tools/mkhive/reginf.c
sdk/tools/mkhive/registry.c

index 517925a..82c8ecc 100644 (file)
@@ -89,6 +89,10 @@ RegSetValueExW(
     IN const UCHAR* lpData,
     IN ULONG cbData);
 
+LONG WINAPI
+RegCloseKey(
+    IN HKEY hKey);
+
 LONG WINAPI
 RegDeleteKeyW(
     IN HKEY hKey,
index c6087a9..47f0d85 100644 (file)
@@ -463,8 +463,11 @@ registry_callback(HINF hInf, PWCHAR Section, BOOL Delete)
         /* and now do it */
         if (!do_reg_operation(KeyHandle, ValuePtr, Context, Flags))
         {
+            RegCloseKey(KeyHandle);
             return FALSE;
         }
+
+        RegCloseKey(KeyHandle);
     }
 
     InfHostFreeContext(Context);
index 1686fca..cd238dc 100644 (file)
@@ -485,6 +485,18 @@ RegpCreateOrOpenKey(
     return ERROR_SUCCESS;
 }
 
+LONG WINAPI
+RegCloseKey(
+    IN HKEY hKey)
+{
+    PMEMKEY Key = HKEY_TO_MEMKEY(hKey); // ParentKey
+
+    /* Free the object */
+    free(Key);
+
+    return ERROR_SUCCESS;
+}
+
 LONG WINAPI
 RegCreateKeyW(
     IN HKEY hKey,
@@ -942,6 +954,8 @@ RegInitializeRegistry(
     CreateSymLink(L"Registry\\Machine\\SYSTEM\\CurrentControlSet",
                   NULL, ControlSetKey);
 
+    RegCloseKey(ControlSetKey);
+
 #if 0
     /* Link SECURITY to SAM */
     CmpLinkKeyToHive(L"\\Registry\\Machine\\Security\\SAM", L"\\Registry\\Machine\\SAM\\SAM");