From 7ace7f019a4532c855a249ef1d7e84dc66730164 Mon Sep 17 00:00:00 2001 From: George Rhoten Date: Fri, 9 May 2003 23:20:55 +0000 Subject: [PATCH] ICU-2787 We must allow u_cleanup to be called twice, and to allow the library to be reinitialized. X-SVN-Rev: 11877 --- icu4c/source/common/locid.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/icu4c/source/common/locid.cpp b/icu4c/source/common/locid.cpp index 165d5a57505..6f501acf57e 100644 --- a/icu4c/source/common/locid.cpp +++ b/icu4c/source/common/locid.cpp @@ -39,10 +39,6 @@ #include "uhash.h" #include "ucln_cmn.h" -U_NAMESPACE_BEGIN - -const char Locale::fgClassID=0; - static Locale* availableLocaleList = NULL; static int32_t availableLocaleListCount; typedef enum ELocalePos { @@ -78,8 +74,6 @@ typedef enum ELocalePos { static Locale *gLocaleCache = NULL; static Locale *gDefaultLocale = NULL; -U_NAMESPACE_END - UBool locale_cleanup(void) { @@ -91,12 +85,20 @@ locale_cleanup(void) } availableLocaleListCount = 0; - delete [] gLocaleCache; - delete gDefaultLocale; + if (gLocaleCache) { + delete [] gLocaleCache; + gLocaleCache = NULL; + } + if (gDefaultLocale) { + delete gDefaultLocale; + gDefaultLocale = NULL; + } return TRUE; } U_NAMESPACE_BEGIN +const char Locale::fgClassID=0; + void locale_set_default_internal(const char *id) { U_NAMESPACE_USE @@ -928,7 +930,9 @@ Locale::getLocaleCache(void) tLocaleCache = NULL; } umtx_unlock(NULL); - delete [] tLocaleCache; // Fancy array delete will destruct each member. + if (tLocaleCache) { + delete [] tLocaleCache; // Fancy array delete will destruct each member. + } } return gLocaleCache; }