From cdb9be7ba9ecc0abef760b2aceb7b7215efc59ed Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Wed, 13 Nov 2002 19:45:27 +0000 Subject: [PATCH] Work with the correct subkey with loading keys. Not a true fix to the LoadKey/SaveKey situation. --- dlls/advapi32/registry.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c index 35762344a17..3d3e4d5bc7c 100644 --- a/dlls/advapi32/registry.c +++ b/dlls/advapi32/registry.c @@ -1452,6 +1452,7 @@ LONG WINAPI RegLoadKeyW( HKEY hkey, LPCWSTR subkey, LPCWSTR filename ) { HANDLE file; DWORD ret, len, err = GetLastError(); + HKEY shkey; TRACE( "(%p,%s,%s)\n", hkey, debugstr_w(subkey), debugstr_w(filename) ); @@ -1469,15 +1470,18 @@ LONG WINAPI RegLoadKeyW( HKEY hkey, LPCWSTR subkey, LPCWSTR filename ) goto done; } + RegCreateKeyW(hkey,subkey,&shkey); + SERVER_START_REQ( load_registry ) { - req->hkey = hkey; + req->hkey = shkey; req->file = file; wine_server_add_data( req, subkey, len ); ret = RtlNtStatusToDosError( wine_server_call(req) ); } SERVER_END_REQ; CloseHandle( file ); + RegCloseKey(shkey); done: SetLastError( err ); /* restore the last error code */ @@ -1493,6 +1497,7 @@ LONG WINAPI RegLoadKeyA( HKEY hkey, LPCSTR subkey, LPCSTR filename ) WCHAR buffer[MAX_PATH]; HANDLE file; DWORD ret, len, err = GetLastError(); + HKEY shkey; TRACE( "(%p,%s,%s)\n", hkey, debugstr_a(subkey), debugstr_a(filename) ); @@ -1510,15 +1515,18 @@ LONG WINAPI RegLoadKeyA( HKEY hkey, LPCSTR subkey, LPCSTR filename ) goto done; } + RegCreateKeyA(hkey,subkey,&shkey); + SERVER_START_REQ( load_registry ) { - req->hkey = hkey; + req->hkey = shkey; req->file = file; wine_server_add_data( req, buffer, len * sizeof(WCHAR) ); ret = RtlNtStatusToDosError( wine_server_call(req) ); } SERVER_END_REQ; CloseHandle( file ); + RegCloseKey(shkey); done: SetLastError( err ); /* restore the last error code */