Alexandre Julliard : kernel32: Get rid of the NLS_RegOpenSubKey function, its behavior is broken.

Alexandre Julliard julliard at winehq.org
Fri Oct 12 05:23:05 CDT 2007


Module: wine
Branch: master
Commit: 60c562446c0218aabcb327fb3f7aa731434634d2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=60c562446c0218aabcb327fb3f7aa731434634d2

Author: Alexandre Julliard <julliard at 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");




More information about the wine-cvs mailing list