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