From e8d1e2f745ea6dfd14971a272cd9882d32443d69 Mon Sep 17 00:00:00 2001 From: James Hawkins Date: Fri, 25 Feb 2005 16:52:10 +0000 Subject: [PATCH] Fix RegOpen/CloseKey. --- dlls/advapi32/registry.c | 22 +++++++++++----------- dlls/advapi32/tests/registry.c | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dlls/advapi32/registry.c b/dlls/advapi32/registry.c index a102719bc6d..c3cb3cfd379 100644 --- a/dlls/advapi32/registry.c +++ b/dlls/advapi32/registry.c @@ -277,11 +277,6 @@ DWORD WINAPI RegOpenKeyExW( HKEY hkey, LPCWSTR name, DWORD reserved, REGSAM acce OBJECT_ATTRIBUTES attr; UNICODE_STRING nameW; - if (!name || !*name) { - *retkey = hkey; - return ERROR_SUCCESS; - } - if (!(hkey = get_special_root_hkey( hkey ))) return ERROR_INVALID_HANDLE; attr.Length = sizeof(attr); @@ -321,11 +316,6 @@ DWORD WINAPI RegOpenKeyExA( HKEY hkey, LPCSTR name, DWORD reserved, REGSAM acces STRING nameA; NTSTATUS status; - if (!name || !*name) { - *retkey = hkey; - return ERROR_SUCCESS; - } - if (!is_version_nt()) access = KEY_ALL_ACCESS; /* Win95 ignores the access mask */ if (!(hkey = get_special_root_hkey( hkey ))) return ERROR_INVALID_HANDLE; @@ -354,6 +344,11 @@ DWORD WINAPI RegOpenKeyExA( HKEY hkey, LPCSTR name, DWORD reserved, REGSAM acces */ DWORD WINAPI RegOpenKeyW( HKEY hkey, LPCWSTR name, PHKEY retkey ) { + if (!name || !*name) + { + *retkey = hkey; + return ERROR_SUCCESS; + } return RegOpenKeyExW( hkey, name, 0, KEY_ALL_ACCESS, retkey ); } @@ -374,6 +369,11 @@ DWORD WINAPI RegOpenKeyW( HKEY hkey, LPCWSTR name, PHKEY retkey ) */ DWORD WINAPI RegOpenKeyA( HKEY hkey, LPCSTR name, PHKEY retkey ) { + if (!name || !*name) + { + *retkey = hkey; + return ERROR_SUCCESS; + } return RegOpenKeyExA( hkey, name, 0, KEY_ALL_ACCESS, retkey ); } @@ -855,7 +855,7 @@ DWORD WINAPI RegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWOR */ DWORD WINAPI RegCloseKey( HKEY hkey ) { - if (!hkey) return ERROR_INVALID_PARAMETER; + if (!hkey) return ERROR_INVALID_HANDLE; if (hkey >= (HKEY)0x80000000) return ERROR_SUCCESS; return RtlNtStatusToDosError( NtClose( hkey ) ); } diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c index 84704a2e989..b9a39a2d8e9 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c @@ -341,7 +341,7 @@ static void test_reg_close_key() /* try to close a NULL handle */ ret = RegCloseKey(NULL); - ok(ret == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %ld\n", ret); + ok(ret == ERROR_INVALID_HANDLE, "expected ERROR_INVALID_HANDLE, got %ld\n", ret); } START_TEST(registry)