You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by am...@apache.org on 2006/04/17 21:13:04 UTC

svn commit: r394753 - /xerces/c/trunk/src/xercesc/util/XMLMsgLoader.cpp

Author: amassari
Date: Mon Apr 17 12:13:02 2006
New Revision: 394753

URL: http://svn.apache.org/viewcvs?rev=394753&view=rev
Log:
XMLMsgLoader::setLocale was not handling locales specifying the sublanguage

Modified:
    xerces/c/trunk/src/xercesc/util/XMLMsgLoader.cpp

Modified: xerces/c/trunk/src/xercesc/util/XMLMsgLoader.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLMsgLoader.cpp?rev=394753&r1=394752&r2=394753&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLMsgLoader.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLMsgLoader.cpp Mon Apr 17 12:13:02 2006
@@ -30,7 +30,7 @@
 
 /***
  *   The PlatformUtils::initialize() would set fLocale
- *   to either a user-privded string or 0
+ *   to either a user-provided string or 0
  *
  ***/
 char* XMLMsgLoader::fLocale = 0;
@@ -49,11 +49,11 @@
     /***
      * Release the current setting's memory, if any
      ***/
-	if (fLocale)
-	{
+    if (fLocale)
+    {
         XMLPlatformUtils::fgMemoryManager->deallocate(fLocale);//delete [] fLocale;
-		fLocale = 0;
-	}
+        fLocale = 0;
+    }
 
     /***
      *  
@@ -62,32 +62,23 @@
      *           refer to phttp://oss.software.ibm.com/icu/userguide/locale.html
      *           for details.
      */
-	if (localeToAdopt && strlen(localeToAdopt) == 2)
-	{
-/*
-		size_t lettersWritten, bytesConsumed;
-		XMLCh localBuffer[3];
-        if (XMLString::transcode(localeToAdopt, localBuffer, 2, lettersWritten, bytesConsumed)
-		    && lettersWritten == 2)
-		{
-			fLocale   = XMLString::replicate(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
-			memcpy(fLanguage, localBuffer, 3 * sizeof(XMLCh));
-		}
-*/
-		XMLCh *transcoded = XMLString::transcode(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
-		if (transcoded[0] && transcoded[1] && !transcoded[2])
-		{
-			fLocale   = XMLString::replicate(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
-			memcpy(fLanguage, transcoded, 3 * sizeof(XMLCh));
-			XMLPlatformUtils::fgMemoryManager->deallocate(transcoded);
-		}
+    if (localeToAdopt && (strlen(localeToAdopt) == 2 || (strlen(localeToAdopt) > 3 && localeToAdopt[2]=='_')))
+    {
+        XMLCh *transcoded = XMLString::transcode(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
+        if (transcoded[0] && transcoded[1] && (!transcoded[2] || transcoded[2]==chUnderscore))
+        {
+            fLocale   = XMLString::replicate(localeToAdopt, XMLPlatformUtils::fgMemoryManager);
+            memcpy(fLanguage, transcoded, 2 * sizeof(XMLCh));
+            fLanguage[2]=0;
+            XMLPlatformUtils::fgMemoryManager->deallocate(transcoded);
+        }
     }
 
 }
 
 const char* XMLMsgLoader::getLocale()
 {
-	return fLocale;
+    return fLocale;
 }
 
 /***



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org