]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/strconv.cpp
conditional compilation for Universal Interfaces (3.4 or later)
[wxWidgets.git] / src / common / strconv.cpp
index 1e36ac81b46a65d66ba36c77ebc1a89386813d22..fdb714185f8c7b36b5d5cd344de9c3278ec607bc 100644 (file)
@@ -369,20 +369,23 @@ static long CharsetToCodepage(const wxChar *name)
     
     wxString cn(name);
     do {
-        wxString path( wxT("MIME\\Database\\Charset\\") );
+        wxString path(wxT("MIME\\Database\\Charset\\"));
         path += cn;
-        wxRegKey key( wxRegKey::HKCR, path );
-
-        /* two cases: either there's an AliasForCharset string,
-         * or there are Codepage and InternetEncoding dwords.
-         * The InternetEncoding gives us the actual encoding,
-         * the Codepage just says which Windows character set to
-         * use when displaying the data.
-         */
-        if (key.QueryValue( wxT("InternetEncoding"), &CP )) break;
+        wxRegKey key(wxRegKey::HKCR, path);
+
+        if (!key.Exists()) continue;
+        
+        // two cases: either there's an AliasForCharset string,
+        // or there are Codepage and InternetEncoding dwords.
+        // The InternetEncoding gives us the actual encoding,
+        // the Codepage just says which Windows character set to
+        // use when displaying the data.
+        if (key.HasValue(wxT("InternetEncoding")) &&
+            key.QueryValue(wxT("InternetEncoding"), &CP)) break;
         
         // no encoding, see if it's an alias
-        if (!key.QueryValue( wxT("AliasForCharset"), cn )) break;
+        if (!key.HasValue(wxT("AliasForCharset")) ||
+            !key.QueryValue(wxT("AliasForCharset"), cn)) break;
     } while (1);
     
     return CP;