freed gUpperMap and gLowerMap in nsCaseConversionImp2

This commit is contained in:
warren%netscape.com 1999-09-20 20:52:16 +00:00
parent 1eba29ca37
commit e1cb53233a
2 changed files with 15 additions and 14 deletions

View File

@ -135,19 +135,13 @@ PRUnichar nsCompressedMap::Lookup(
NS_DEFINE_IID(kCaseConversionIID, NS_ICASECONVERSION_IID);
PRBool nsCaseConversionImp2::gInit = PR_FALSE;
nsrefcnt nsCaseConversionImp2::gInit = 0;
NS_IMPL_ISUPPORTS(nsCaseConversionImp2, kCaseConversionIID);
static nsCompressedMap *gUpperMap = nsnull;
static nsCompressedMap *gLowerMap = nsnull;
void nsCaseConversionImp2::Init()
{
gUpperMap = new nsCompressedMap(&gToUpper[0], gToUpperItems);
gLowerMap = new nsCompressedMap(&gToLower[0], gToLowerItems);
gInit = PR_TRUE;
}
nsresult nsCaseConversionImp2::ToUpper(
PRUnichar aChar, PRUnichar* aReturn
)
@ -320,13 +314,21 @@ nsresult nsCaseConversionImp2::ToTitle(
nsCaseConversionImp2::nsCaseConversionImp2()
{
if(! gInit)
Init();
NS_INIT_REFCNT();
PR_AtomicIncrement(&g_InstanceCount);
if (gInit++ == 0) {
gUpperMap = new nsCompressedMap(&gToUpper[0], gToUpperItems);
gLowerMap = new nsCompressedMap(&gToLower[0], gToLowerItems);
}
NS_INIT_REFCNT();
PR_AtomicIncrement(&g_InstanceCount);
}
nsCaseConversionImp2::~nsCaseConversionImp2()
{
PR_AtomicDecrement(&g_InstanceCount);
PR_AtomicDecrement(&g_InstanceCount);
if (--gInit == 0) {
delete gUpperMap;
gUpperMap = nsnull;
delete gLowerMap;
gLowerMap = nsnull;
}
}

View File

@ -45,9 +45,8 @@ public:
NS_IMETHOD ToTitle(const PRUnichar* anArray, PRUnichar* aReturn,
PRUint32 aLen, PRBool aStartInWordBoundary = PR_TRUE);
void Init();
private:
static PRBool gInit;
static nsrefcnt gInit;
};
#endif