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