freed gUpperMap and gLowerMap in nsCaseConversionImp2

This commit is contained in:
warren%netscape.com 1999-09-20 20:52:16 +00:00
Родитель ce1be74e8b
Коммит e57b4c9e7e
2 изменённых файлов: 15 добавлений и 14 удалений

Просмотреть файл

@ -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;
}
}

Просмотреть файл

@ -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