NT loader: don't stop loading a hive when an error occurs.
diff --git a/misc/registry.c b/misc/registry.c
index 50aef39..2f0407a 100644
--- a/misc/registry.c
+++ b/misc/registry.c
@@ -887,15 +887,17 @@
int _nt_parse_vk(HKEY hkey, char * base, nt_vk * vk, int level)
{
WCHAR name [256];
+ DWORD ret;
BYTE * pdata = (BYTE *)(base+vk->data_off+4); /* start of data */
if(vk->id != REG_VALUE_BLOCK_ID) goto error;
lstrcpynAtoW(name, vk->name, vk->nam_len+1);
- if (RegSetValueExW( hkey, (vk->flag & 0x00000001) ? name : NULL, 0, vk->type,
+ ret = RegSetValueExW( hkey, (vk->flag & 0x00000001) ? name : NULL, 0, vk->type,
(vk->data_len & 0x80000000) ? (LPBYTE)&(vk->data_off): pdata,
- (vk->data_len & 0x7fffffff) )) goto error;
+ (vk->data_len & 0x7fffffff) );
+ if (ret) ERR("RegSetValueEx failed (0x%08lx)\n", ret);
return TRUE;
error:
ERR_(reg)("vk block invalid\n");
@@ -1664,6 +1666,9 @@
free (home);
free (fn);
+ /* this key is generated when the nt-core booted successfully */
+ if (!RegCreateKeyA(HKEY_LOCAL_MACHINE,"System\\Clone",&hkey))
+ RegCloseKey(hkey);
}
if (PROFILE_GetWineIniBool ("registry","LoadGlobalRegistryFiles", 1))