From e0c309ea676d6651f924914fbd882887c3524c33 Mon Sep 17 00:00:00 2001
From: Khaled Noaman <knoaman@apache.org>
Date: Thu, 22 Jul 2004 15:37:18 +0000
Subject: [PATCH] Use file static instance instead of local static instance

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@175963 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/dom/impl/DOMImplementationImpl.cpp     |  6 +++---
 src/xercesc/dom/impl/DOMImplementationRegistry.cpp |  4 ++--
 src/xercesc/dom/impl/DOMNodeImpl.cpp               |  3 +--
 src/xercesc/util/EncodingValidator.cpp             |  5 ++++-
 src/xercesc/util/TransService.cpp                  |  5 ++---
 src/xercesc/util/regx/RangeTokenMap.cpp            |  5 ++++-
 src/xercesc/validators/schema/XSDErrorReporter.cpp | 10 ++++++----
 7 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.cpp b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
index b842a881a..3fd9d48f4 100644
--- a/src/xercesc/dom/impl/DOMImplementationImpl.cpp
+++ b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
@@ -106,6 +106,8 @@ static const XMLCh  gLS[] =     // Points to "LS"
 // -----------------------------------------------------------------------
 static XMLMsgLoader  *sMsgLoader4DOM = 0;   // Points to the singleton instance
 static XMLMutex      *sMutex4DOM = 0;
+static XMLRegisterCleanup mutex4DOMCleanup;
+static XMLRegisterCleanup msgLoader4DOMCleanup;
 
 static void reinitMsgLoader4DOM()
 {
@@ -121,7 +123,6 @@ static void reinitMutex4DOM()
 
 static XMLMutex& getMutex4DOM()
 {
-    static XMLRegisterCleanup mutex4DOMCleanup;
     if (!sMutex4DOM)
     {
         XMLMutexLock lock(XMLPlatformUtils::fgAtomicMutex);
@@ -138,7 +139,6 @@ static XMLMutex& getMutex4DOM()
 
 XMLMsgLoader* DOMImplementationImpl::getMsgLoader4DOM()
 {
-    static XMLRegisterCleanup msgLoader4DOMCleanup;
     if (!sMsgLoader4DOM)
     {
         XMLMutexLock lock(&getMutex4DOM());
@@ -163,6 +163,7 @@ XMLMsgLoader* DOMImplementationImpl::getMsgLoader4DOM()
 static DOMImplementationImpl    *gDomimp = 0;   // Points to the singleton instance
                                             //  of DOMImplementation that is returnedreturned
                                             //  by any call to getImplementation().
+static XMLRegisterCleanup implementationCleanup;
 
 static void reinitImplementation()
 {
@@ -180,7 +181,6 @@ static void reinitImplementation()
 //
 DOMImplementationImpl *DOMImplementationImpl::getDOMImplementationImpl()
 {
-    static XMLRegisterCleanup implementationCleanup;
     if (!gDomimp)
     {
         XMLMutexLock lock(&getMutex4DOM());
diff --git a/src/xercesc/dom/impl/DOMImplementationRegistry.cpp b/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
index d71320981..78f4042c3 100644
--- a/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
+++ b/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
@@ -80,6 +80,8 @@ static RefVectorOf<DOMImplementationSource>* gDOMImplSrcVector = 0;
 //  Global mutex that is used to synchronize access to the vector
 static XMLMutex* gDOMImplSrcVectorMutex = 0;
 
+static XMLRegisterCleanup cleanupDOMImplSrcVector;
+static XMLRegisterCleanup cleanupDOMImplSrcVectorMutex;
 
 // -----------------------------------------------------------------------
 //  Function prototypes for internally used functions.
@@ -110,7 +112,6 @@ RefVectorOf<DOMImplementationSource>* getDOMImplSrcVector()
 {
     // Note: we are not synchronizing on creation since that caller is doing
     //       it (i.e. caller is locking a mutex before calling us)
-    static XMLRegisterCleanup cleanupDOMImplSrcVector;
     if (!gDOMImplSrcVector)
     {
         gDOMImplSrcVector = new RefVectorOf<DOMImplementationSource>(3, false);
@@ -122,7 +123,6 @@ RefVectorOf<DOMImplementationSource>* getDOMImplSrcVector()
 
 XMLMutex& getDOMImplSrcVectorMutex()
 {
-    static XMLRegisterCleanup cleanupDOMImplSrcVectorMutex;
     if (!gDOMImplSrcVectorMutex)
     {
         XMLMutexLock lock(XMLPlatformUtils::fgAtomicMutex);
diff --git a/src/xercesc/dom/impl/DOMNodeImpl.cpp b/src/xercesc/dom/impl/DOMNodeImpl.cpp
index b3cdb0a84..4d72368b4 100644
--- a/src/xercesc/dom/impl/DOMNodeImpl.cpp
+++ b/src/xercesc/dom/impl/DOMNodeImpl.cpp
@@ -102,6 +102,7 @@ const unsigned short DOMNodeImpl::TOBERELEASED = 0x1<<12;
 // -----------------------------------------------------------------------
 static DOMNodeListImpl *gEmptyNodeList = 0;  // make a singleton empty node list
 static XMLMutex* gEmptyNodeListMutex = 0;
+static XMLRegisterCleanup emptyNodeListCleanup;
 
 static void reinitEmptyNodeList()
 {
@@ -157,8 +158,6 @@ DOMNamedNodeMap * DOMNodeImpl::getAttributes() const {
 
 DOMNodeList *DOMNodeImpl::getChildNodes() const {
 
-    static XMLRegisterCleanup emptyNodeListCleanup;
-
     if (!gEmptyNodeList)
     {
         if (!gEmptyNodeListMutex)
diff --git a/src/xercesc/util/EncodingValidator.cpp b/src/xercesc/util/EncodingValidator.cpp
index 2fad0e43b..063d24145 100644
--- a/src/xercesc/util/EncodingValidator.cpp
+++ b/src/xercesc/util/EncodingValidator.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.6  2004/07/22 15:37:18  knoaman
+ * Use file static instance instead of local static instance
+ *
  * Revision 1.5  2004/01/13 16:17:10  knoaman
  * Fo sanity, use class name to qualify method
  *
@@ -88,6 +91,7 @@ XERCES_CPP_NAMESPACE_BEGIN
 // ---------------------------------------------------------------------------
 static XMLMutex* sEncValMutex = 0;
 static XMLRegisterCleanup encValRegistryCleanup;
+static XMLRegisterCleanup instanceCleanup;
 
 // ---------------------------------------------------------------------------
 //  Local, static functions
@@ -165,7 +169,6 @@ void EncodingValidator::initializeRegistry() {
 // ---------------------------------------------------------------------------
 EncodingValidator* EncodingValidator::instance()
 {
-    static XMLRegisterCleanup instanceCleanup;
     if (!fInstance)
     {
         XMLMutexLock lock(&getEncValMutex());
diff --git a/src/xercesc/util/TransService.cpp b/src/xercesc/util/TransService.cpp
index d42889dbe..d9a3e9d17 100644
--- a/src/xercesc/util/TransService.cpp
+++ b/src/xercesc/util/TransService.cpp
@@ -91,6 +91,8 @@ XERCES_CPP_NAMESPACE_BEGIN
 static bool gStrictIANAEncoding = false;
 RefHashTableOf<ENameMap>* XMLTransService::gMappings = 0;
 RefVectorOf<ENameMap> * XMLTransService::gMappingsRecognizer = 0;
+static XMLRegisterCleanup mappingsCleanup;
+static XMLRegisterCleanup mappingsRecognizerCleanup;
 
 // -----------------------------------------------------------------------
 //  Notification that lazy data has been deleted
@@ -110,9 +112,6 @@ void XMLTransService::reinitMappingsRecognizer() {
 // ---------------------------------------------------------------------------
 XMLTransService::XMLTransService()
 {
-    static XMLRegisterCleanup mappingsCleanup;
-    static XMLRegisterCleanup mappingsRecognizerCleanup;
-
     if (!gMappings) {
         RefHashTableOf<ENameMap>* t = new RefHashTableOf<ENameMap>(103);
 
diff --git a/src/xercesc/util/regx/RangeTokenMap.cpp b/src/xercesc/util/regx/RangeTokenMap.cpp
index 550c2d60b..f4dd00fa1 100644
--- a/src/xercesc/util/regx/RangeTokenMap.cpp
+++ b/src/xercesc/util/regx/RangeTokenMap.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.10  2004/07/22 15:37:18  knoaman
+ * Use file static instance instead of local static instance
+ *
  * Revision 1.9  2004/01/13 16:17:10  knoaman
  * Fo sanity, use class name to qualify method
  *
@@ -132,6 +135,7 @@ XERCES_CPP_NAMESPACE_BEGIN
 // ---------------------------------------------------------------------------
 static XMLMutex* sRangeTokMapMutex = 0;
 static XMLRegisterCleanup rangeTokMapRegistryCleanup;
+static XMLRegisterCleanup rangeTokMapInstanceCleanup;
 
 // ---------------------------------------------------------------------------
 //  Local, static functions
@@ -341,7 +345,6 @@ void RangeTokenMap::initializeRegistry() {
 // ---------------------------------------------------------------------------
 RangeTokenMap* RangeTokenMap::instance()
 {
-    static XMLRegisterCleanup rangeTokMapInstanceCleanup;
     if (!fInstance)
     {
         XMLMutexLock lock(&getRangeTokMapMutex());
diff --git a/src/xercesc/validators/schema/XSDErrorReporter.cpp b/src/xercesc/validators/schema/XSDErrorReporter.cpp
index fa03de1e6..e434fd0ad 100644
--- a/src/xercesc/validators/schema/XSDErrorReporter.cpp
+++ b/src/xercesc/validators/schema/XSDErrorReporter.cpp
@@ -56,6 +56,9 @@
 
 /**
   * $Log$
+  * Revision 1.13  2004/07/22 15:37:18  knoaman
+  * Use file static instance instead of local static instance
+  *
   * Revision 1.12  2004/01/09 22:41:58  knoaman
   * Use a global static mutex for locking when creating local static mutexes instead of compareAndSwap
   *
@@ -120,7 +123,9 @@ XERCES_CPP_NAMESPACE_BEGIN
 static XMLMsgLoader*  gErrMsgLoader = 0;
 static XMLMsgLoader*  gValidMsgLoader = 0;
 static XMLMutex*      sErrRprtrMutex = 0;
-
+static XMLRegisterCleanup errRprtrMutexCleanup;
+static XMLRegisterCleanup cleanupErrMsgLoader;
+static XMLRegisterCleanup cleanupValidMsgLoader;
 
 // ---------------------------------------------------------------------------
 //  Local, static functions
@@ -133,7 +138,6 @@ static void reinitErrRprtrMutex()
 
 static XMLMutex& getErrRprtrMutex()
 {
-    static XMLRegisterCleanup errRprtrMutexCleanup;
     if (!sErrRprtrMutex)
     {
         XMLMutexLock lockInit(XMLPlatformUtils::fgAtomicMutex);
@@ -162,7 +166,6 @@ static void reinitValidMsgLoader()
 
 static XMLMsgLoader* getErrMsgLoader()
 {
-    static XMLRegisterCleanup cleanupErrMsgLoader;
     if (!gErrMsgLoader)
     {
         XMLMutexLock lock(&getErrRprtrMutex());
@@ -184,7 +187,6 @@ static XMLMsgLoader* getErrMsgLoader()
 
 static XMLMsgLoader* getValidMsgLoader()
 {
-    static XMLRegisterCleanup cleanupValidMsgLoader;
     if (!gValidMsgLoader)
     {
         XMLMutexLock lock(&getErrRprtrMutex());
-- 
GitLab