Alexandre Julliard : kernel32: Get rid of the NLS_RegOpenSubKey function, its behavior is broken.
Module: wine Branch: master Commit: 60c562446c0218aabcb327fb3f7aa731434634d2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=60c562446c0218aabcb327fb3f... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Oct 12 11:47:34 2007 +0200 kernel32: Get rid of the NLS_RegOpenSubKey function, its behavior is broken. --- dlls/kernel32/locale.c | 45 +++++++++++++++++++++++---------------------- 1 files changed, 23 insertions(+), 22 deletions(-) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 73ca344..6624f81 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -62,7 +62,6 @@ static const union cptable *mac_cptable; static const union cptable *unix_cptable; /* NULL if UTF8 */ static HANDLE NLS_RegOpenKey(HANDLE hRootKey, LPCWSTR szKeyName); -static HANDLE NLS_RegOpenSubKey(HANDLE hRootKey, LPCWSTR szKeyName); static const WCHAR szNlsKeyName[] = { 'M','a','c','h','i','n','e','\\','S','y','s','t','e','m','\\', @@ -70,6 +69,25 @@ static const WCHAR szNlsKeyName[] = { 'C','o','n','t','r','o','l','\\','N','l','s','\0' }; +static const WCHAR szLocaleKeyName[] = { + 'M','a','c','h','i','n','e','\\','S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'C','o','n','t','r','o','l','\\','N','l','s','\\','L','o','c','a','l','e',0 +}; + +static const WCHAR szCodepageKeyName[] = { + 'M','a','c','h','i','n','e','\\','S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'C','o','n','t','r','o','l','\\','N','l','s','\\','C','o','d','e','p','a','g','e',0 +}; + +static const WCHAR szLangGroupsKeyName[] = { + 'M','a','c','h','i','n','e','\\','S','y','s','t','e','m','\\', + 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', + 'C','o','n','t','r','o','l','\\','N','l','s','\\', + 'L','a','n','g','u','a','g','e',' ','G','r','o','u','p','s',0 +}; + /* Charset to codepage map, sorted by name. */ static const struct charset_entry { @@ -630,7 +648,6 @@ static BOOL locale_update_registry( HKEY hkey, const WCHAR *name, LCID lcid, */ void LOCALE_InitRegistry(void) { - static const WCHAR CodepageW[] = {'C','o','d','e','p','a','g','e',0}; static const WCHAR acpW[] = {'A','C','P',0}; static const WCHAR oemcpW[] = {'O','E','M','C','P',0}; static const WCHAR maccpW[] = {'M','A','C','C','P',0}; @@ -720,7 +737,7 @@ void LOCALE_InitRegistry(void) if (locale_update_registry( hkey, lc_ctypeW, lcid_LC_CTYPE, NULL, 0 )) { - HKEY nls_key = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), CodepageW ); + HKEY nls_key = NLS_RegOpenKey( 0, szCodepageKeyName ); for (i = 0; i < sizeof(update_cp_values)/sizeof(update_cp_values[0]); i++) { @@ -2928,16 +2945,6 @@ static HANDLE NLS_RegOpenKey(HANDLE hRootKey, LPCWSTR szKeyName) return hkey; } -static HANDLE NLS_RegOpenSubKey(HANDLE hRootKey, LPCWSTR szKeyName) -{ - HANDLE hKey = NLS_RegOpenKey(hRootKey, szKeyName); - - if (hRootKey) - NtClose( hRootKey ); - - return hKey; -} - static BOOL NLS_RegEnumSubKey(HANDLE hKey, UINT ulIndex, LPWSTR szKeyName, ULONG keyNameSize) { @@ -3051,9 +3058,6 @@ static BOOL NLS_GetLanguageGroupName(LGRPID lgrpid, LPWSTR szName, ULONG nameSiz } /* Registry keys for NLS related information */ -static const WCHAR szLangGroupsKeyName[] = { - 'L','a','n','g','u','a','g','e',' ','G','r','o','u','p','s','\0' -}; static const WCHAR szCountryListName[] = { 'M','a','c','h','i','n','e','\\','S','o','f','t','w','a','r','e','\\', @@ -3101,7 +3105,7 @@ static BOOL NLS_EnumSystemLanguageGroups(ENUMLANGUAGEGROUP_CALLBACKS *lpProcs) return FALSE; } - hKey = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), szLangGroupsKeyName ); + hKey = NLS_RegOpenKey( 0, szLangGroupsKeyName ); if (!hKey) FIXME("NLS registry key not found. Please apply the default registry file 'wine.inf'\n"); @@ -3234,7 +3238,7 @@ BOOL WINAPI IsValidLanguageGroup(LGRPID lgrpid, DWORD dwFlags) case LGRPID_INSTALLED: case LGRPID_SUPPORTED: - hKey = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), szLangGroupsKeyName ); + hKey = NLS_RegOpenKey( 0, szLangGroupsKeyName ); sprintfW( szValueName, szFormat, lgrpid ); @@ -3272,9 +3276,6 @@ typedef struct /* Internal implementation of EnumLanguageGrouplocalesA/W */ static BOOL NLS_EnumLanguageGroupLocales(ENUMLANGUAGEGROUPLOCALE_CALLBACKS *lpProcs) { - static const WCHAR szLocaleKeyName[] = { - 'L','o','c','a','l','e','\0' - }; static const WCHAR szAlternateSortsKeyName[] = { 'A','l','t','e','r','n','a','t','e',' ','S','o','r','t','s','\0' }; @@ -3296,7 +3297,7 @@ static BOOL NLS_EnumLanguageGroupLocales(ENUMLANGUAGEGROUPLOCALE_CALLBACKS *lpPr return FALSE; } - hKey = NLS_RegOpenSubKey( NLS_RegOpenKey( 0, szNlsKeyName ), szLocaleKeyName ); + hKey = NLS_RegOpenKey( 0, szLocaleKeyName ); if (!hKey) WARN("NLS registry key not found. Please apply the default registry file 'wine.inf'\n");
participants (1)
-
Alexandre Julliard