You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by db...@apache.org on 2005/06/06 19:41:43 UTC

svn commit: r180348 [2/2] - in /xerces/c/trunk/src/xercesc: framework/ framework/psvi/ internal/ parsers/ util/ util/regx/ validators/datatype/ validators/schema/ validators/schema/identity/

Modified: xerces/c/trunk/src/xercesc/util/XMLString.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLString.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLString.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLString.cpp Mon Jun  6 10:41:39 2005
@@ -43,6 +43,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/util/XMLUri.hpp>
+#include <xercesc/util/XMLURL.hpp>
 #include <xercesc/internal/XMLReader.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
@@ -647,32 +648,37 @@
         (colPos == nameLen - 1)  )     // <URI>':'
         return false;
 
-    // Examine URI
-    if (colPos > 0)
+
+    // Examine localpart
+    if (!XMLString::isValidNCName(&name[colPos+1]))
+    {
+        return false;
+    }
+    else if (colPos == 0)
+    {
+        return true;
+    }
+    else
     {
-        XMLCh* temp = (XMLCh*) &(name[colPos]);
-        *temp = 0;
+        // Examine URI
+        XMLCh* const temp =
+            (XMLCh*) manager->allocate((colPos + 1) * sizeof(XMLCh));
+        const ArrayJanitor<XMLCh> jan(temp, manager);
+
+        copyNString(temp, name, colPos);
+        temp[colPos] = 0;
 
         try
         {            
-            XMLUri  newURI(name, manager); // no relative uri support here
-            *temp = chColon;
+            XMLUri  newURI(temp, manager); // no relative uri support here
         }
-        catch(const OutOfMemoryException&)
+        catch (const MalformedURLException&)
         {
-            *temp = chColon;
             return false;
         }
-        catch (...)
-        {
-            *temp = chColon;
-            return false;
-        }
-    }
-
-    // Examine localpart
-    return XMLString::isValidNCName(&(name[colPos+1]));
 
+        return true;
+    }
 }
 
 
@@ -1662,7 +1668,7 @@
     (
         (strLen+1) * sizeof(XMLCh)
     );//new XMLCh[strLen+1];
-    XMLCh* retPtr = &(retBuf[0]);
+    XMLCh* retPtr = &retBuf[0];
     XMLCh* startPtr = toConvert;
 
     while ( *startPtr )
@@ -1762,7 +1768,7 @@
     (
         (endPtr - startPtr + 1) * sizeof(XMLCh)
     );//new XMLCh[endPtr - startPtr + 1];
-    XMLCh* retPtr = &(retBuf[0]);
+    XMLCh* retPtr = &retBuf[0];
     bool  inSpace = false;
     while (startPtr < endPtr)
     {
@@ -1809,7 +1815,7 @@
     (
         (XMLString::stringLen(toConvert) + 1) * sizeof(XMLCh)
     );//new XMLCh[ XMLString::stringLen(toConvert) + 1];
-    XMLCh* retPtr = &(retBuf[0]);
+    XMLCh* retPtr = &retBuf[0];
     XMLCh* startPtr = toConvert;
 
     while (*startPtr)

Modified: xerces/c/trunk/src/xercesc/util/XMLStringTokenizer.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLStringTokenizer.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLStringTokenizer.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLStringTokenizer.cpp Mon Jun  6 10:41:39 2005
@@ -54,6 +54,7 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
+#include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/XMLStringTokenizer.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
@@ -71,6 +72,9 @@
 // ---------------------------------------------------------------------------
 //  XMLStringTokenizer: Constructors and Destructor
 // ---------------------------------------------------------------------------
+
+typedef JanitorMemFunCall<XMLStringTokenizer>   CleanupType;
+
 XMLStringTokenizer::XMLStringTokenizer( const XMLCh* const srcStr
                                       , MemoryManager* const manager)
     : fOffset(0)
@@ -80,6 +84,8 @@
     , fTokens(0)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &XMLStringTokenizer::cleanUp);
+
 	try {
         if (fStringLen > 0) {
             fTokens = new (fMemoryManager) RefArrayVectorOf<XMLCh>(4, true, fMemoryManager);
@@ -87,11 +93,12 @@
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...) {
-        cleanUp();
-    }
+
+    cleanup.release();
 }
 
 XMLStringTokenizer::XMLStringTokenizer(const XMLCh* const srcStr,
@@ -104,6 +111,8 @@
     , fTokens(0)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &XMLStringTokenizer::cleanUp);
+
 	try {
 
         
@@ -114,11 +123,12 @@
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...) {
-        cleanUp();
-    }
+
+    cleanup.release();
 }
 
 XMLStringTokenizer::~XMLStringTokenizer()

Modified: xerces/c/trunk/src/xercesc/util/XMLURL.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLURL.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLURL.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLURL.cpp Mon Jun  6 10:41:39 2005
@@ -164,6 +164,8 @@
 {
 }
 
+typedef JanitorMemFunCall<XMLURL>   CleanupType;
+
 XMLURL::XMLURL(const XMLCh* const    baseURL
              , const XMLCh* const    relativeURL
              , MemoryManager* const manager) :
@@ -180,19 +182,20 @@
     , fURLText(0)
     , fHasInvalidChar(false)
 {
+    CleanupType cleanup(this, &XMLURL::cleanUp);
+
 	try
 	{	
         setURL(baseURL, relativeURL);
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...)
-    {
-        cleanup();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 XMLURL::XMLURL(const XMLCh* const  baseURL
@@ -211,6 +214,8 @@
     , fURLText(0)
     , fHasInvalidChar(false)
 {
+    CleanupType cleanup(this, &XMLURL::cleanUp);
+
     XMLCh* tmpRel = XMLString::transcode(relativeURL, fMemoryManager);
     ArrayJanitor<XMLCh> janRel(tmpRel, fMemoryManager);
 	try
@@ -219,13 +224,12 @@
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...)
-    {
-        cleanup();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 XMLURL::XMLURL(const XMLURL&         baseURL
@@ -243,19 +247,20 @@
     , fURLText(0)
     , fHasInvalidChar(false)
 {
+    CleanupType cleanup(this, &XMLURL::cleanUp);
+
 	try
 	{
 		setURL(baseURL, relativeURL);
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...)
-    {
-        cleanup();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 XMLURL::XMLURL(const  XMLURL&        baseURL
@@ -273,6 +278,8 @@
     , fURLText(0)
     , fHasInvalidChar(false)
 {
+    CleanupType cleanup(this, &XMLURL::cleanUp);
+
     XMLCh* tmpRel = XMLString::transcode(relativeURL, fMemoryManager);
     ArrayJanitor<XMLCh> janRel(tmpRel, fMemoryManager);
 	try
@@ -281,14 +288,12 @@
 	}
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...)
-    {
-        cleanup();
+        cleanup.release();
+
         throw;
     }
 
+    cleanup.release();
 }
 
 XMLURL::XMLURL(const XMLCh* const urlText,
@@ -306,19 +311,20 @@
     , fURLText(0)
     , fHasInvalidChar(false)
 {
+    CleanupType cleanup(this, &XMLURL::cleanUp);
+
 	try
 	{
 	    setURL(urlText);
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...)
-    {
-        cleanup();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 XMLURL::XMLURL(const char* const urlText,
@@ -336,6 +342,8 @@
     , fURLText(0)
     , fHasInvalidChar(false)
 {
+    CleanupType cleanup(this, &XMLURL::cleanUp);
+
     XMLCh* tmpText = XMLString::transcode(urlText, fMemoryManager);
     ArrayJanitor<XMLCh> janRel(tmpText, fMemoryManager);
 	try
@@ -344,13 +352,12 @@
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...)
-    {
-        cleanup();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 XMLURL::XMLURL(const XMLURL& toCopy) :
@@ -367,6 +374,8 @@
     , fURLText(0)
     , fHasInvalidChar(toCopy.fHasInvalidChar)
 {
+    CleanupType cleanup(this, &XMLURL::cleanUp);
+
     try
     {
         fFragment = XMLString::replicate(toCopy.fFragment, fMemoryManager);
@@ -379,18 +388,17 @@
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...)
-    {
-        cleanup();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 XMLURL::~XMLURL()
 {
-    cleanup();
+    cleanUp();
 }
 
 
@@ -403,7 +411,7 @@
         return *this;
 
     // Clean up our stuff
-    cleanup();
+    cleanUp();
 
     // And copy his stuff
     fMemoryManager = toAssign.fMemoryManager;
@@ -473,14 +481,14 @@
     //
     //  Try to parse the URL.
     //
-    cleanup();
+    cleanUp();
     parse(urlText);
 }
 
 void XMLURL::setURL(const XMLCh* const    baseURL
                   , const XMLCh* const    relativeURL)
 {
-    cleanup();
+    cleanUp();
 
     // Parse our URL string
     parse(relativeURL);
@@ -496,7 +504,7 @@
 			XMLURL basePart(baseURL, fMemoryManager);
 			if (!conglomerateWithBase(basePart, false))
 			{
-				cleanup();
+				cleanUp();
 				ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_RelativeBaseURL, fMemoryManager);
 			}
 		}
@@ -510,7 +518,7 @@
                   , const XMLCh* const    relativeURL
                   , XMLURL& xmlURL)
 {
-    cleanup();
+    cleanUp();
 
     // Parse our URL string
     if (parse(relativeURL, xmlURL))
@@ -535,7 +543,7 @@
 void XMLURL::setURL(const XMLURL&         baseURL
                   , const XMLCh* const    relativeURL)
 {
-    cleanup();
+    cleanUp();
 
 	// Parse our URL string
     parse(relativeURL);
@@ -765,7 +773,7 @@
 //  Just a central place to handle cleanup, since its done from a number
 //  of different spots.
 //
-void XMLURL::cleanup()
+void XMLURL::cleanUp()
 {
     fMemoryManager->deallocate(fFragment);//delete [] fFragment;
     fMemoryManager->deallocate(fHost);//delete [] fHost;

Modified: xerces/c/trunk/src/xercesc/util/XMLURL.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLURL.hpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLURL.hpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLURL.hpp Mon Jun  6 10:41:39 2005
@@ -155,7 +155,7 @@
     //  Private helper methods
     // -----------------------------------------------------------------------
     void buildFullText();
-    void cleanup();
+    void cleanUp();
     bool conglomerateWithBase(const XMLURL& baseURL, bool useExceptions=true);
     void parse
     (

Modified: xerces/c/trunk/src/xercesc/util/XMLUri.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/XMLUri.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/XMLUri.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/XMLUri.cpp Mon Jun  6 10:41:39 2005
@@ -236,6 +236,9 @@
 //  XMLUri: Constructors and Helper methods
 // ---------------------------------------------------------------------------
 // ctor# 2
+
+typedef JanitorMemFunCall<XMLUri>   CleanupType;
+
 XMLUri::XMLUri(const XMLCh* const uriSpec,
                MemoryManager* const manager)
 : fPort(-1)
@@ -249,18 +252,19 @@
 , fURIText(0)
 , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &XMLUri::cleanUp);
+
     try {
         initialize((XMLUri *)0, uriSpec);
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...)
-    {
-        cleanUp();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 // ctor# 7 relative ctor
@@ -278,18 +282,19 @@
 , fURIText(0)
 , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &XMLUri::cleanUp);
+
     try {
         initialize(baseURI, uriSpec);
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...)
-    {
-        cleanUp();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 //Copy constructor
@@ -307,36 +312,39 @@
 , fURIText(0)
 , fMemoryManager(toCopy.fMemoryManager)
 {
+    CleanupType cleanup(this, &XMLUri::cleanUp);
+
     try {
         initialize(toCopy);
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        cleanUp();
+        cleanup.release();
+
         throw;
     }
 
+    cleanup.release();
 }
 
 XMLUri& XMLUri::operator=(const XMLUri& toAssign)
 {
     cleanUp();
+
+    CleanupType cleanup(this, &XMLUri::cleanUp);
+
     try {
         initialize(toAssign);
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...)
-    {
-        cleanUp();
-        throw;
-    }
+
+    cleanup.release();
+
     return *this;
 }
 
@@ -788,18 +796,7 @@
 
         if (portStr && *portStr)
         {
-            try
-            {
-                port = XMLString::parseInt(portStr, fMemoryManager);
-            }
-            catch(const OutOfMemoryException&)
-            {
-                throw;
-            }
-            catch (...)
-            {
-                throw;
-            }
+            port = XMLString::parseInt(portStr, fMemoryManager);
         }
     } // if > 0
 
@@ -1144,18 +1141,7 @@
                 , fMemoryManager);
     }
 
-    try
-    {
-        isConformantUserInfo(newUserInfo, fMemoryManager);
-    }
-    catch(const OutOfMemoryException&)
-    {
-        throw;
-    }
-    catch (...)
-    {
-        throw;
-    }
+    isConformantUserInfo(newUserInfo, fMemoryManager);
 
     if (getUserInfo())
     {
@@ -2587,4 +2573,3 @@
 }
 
 XERCES_CPP_NAMESPACE_END
-

Modified: xerces/c/trunk/src/xercesc/util/regx/BMPattern.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/regx/BMPattern.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/regx/BMPattern.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/regx/BMPattern.cpp Mon Jun  6 10:41:39 2005
@@ -56,6 +56,9 @@
 // ---------------------------------------------------------------------------
 //  BMPattern: Constructors
 // ---------------------------------------------------------------------------
+
+typedef JanitorMemFunCall<BMPattern>    CleanupType;
+
 BMPattern::BMPattern( const XMLCh*         const pattern
                     ,       bool                 ignoreCase
                     ,       MemoryManager* const manager) :
@@ -67,19 +70,20 @@
     , fUppercasePattern(0)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &BMPattern::cleanUp);
+
 	try {
         fPattern = XMLString::replicate(pattern, fMemoryManager);
 		initialize();
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 BMPattern::BMPattern( const XMLCh*         const pattern
@@ -94,19 +98,20 @@
     , fUppercasePattern(0)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &BMPattern::cleanUp);
+
 	try {
         fPattern = XMLString::replicate(pattern, fMemoryManager);
 		initialize();
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 BMPattern::~BMPattern() {

Modified: xerces/c/trunk/src/xercesc/util/regx/RangeTokenMap.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/regx/RangeTokenMap.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/regx/RangeTokenMap.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/regx/RangeTokenMap.cpp Mon Jun  6 10:41:39 2005
@@ -100,6 +100,7 @@
 #include <xercesc/util/XMLRegisterCleanup.hpp>
 #include <xercesc/util/StringPool.hpp>
 #include <xercesc/util/XMLInitializer.hpp>
+#include <xercesc/util/OutOfMemoryException.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
@@ -170,6 +171,9 @@
 // ---------------------------------------------------------------------------
 //  RangeTokenMap: Constructors and Destructor
 // ---------------------------------------------------------------------------
+
+typedef JanitorMemFunCall<RangeTokenMap>    CleanupType;
+
 RangeTokenMap::RangeTokenMap(MemoryManager* manager) :
     fTokenRegistry(0)
     , fRangeMap(0)
@@ -177,6 +181,8 @@
     , fTokenFactory(0)
     , fMutex(manager)
 {
+    CleanupType cleanup(this, &RangeTokenMap::cleanUp);
+
     try {
         fTokenRegistry = new (manager) RefHashTableOf<RangeTokenElemMap>(109, manager);
         fRangeMap = new (manager) RefHashTableOf<RangeFactory>(29, manager);
@@ -184,25 +190,19 @@
         fTokenFactory = new (manager) TokenFactory(manager);
         initializeRegistry();
     }
-    catch(...) {
-        cleanUp();
+    catch(const OutOfMemoryException&)
+    {
+        cleanup.release();
+
         throw;
     }
+
+    cleanup.release();
 }
 
 RangeTokenMap::~RangeTokenMap() {
 
-    delete fTokenRegistry;
-    fTokenRegistry = 0;
-
-    delete fRangeMap;
-    fRangeMap = 0;
-
-    delete fCategories;
-    fCategories = 0;
-
-    delete fTokenFactory;
-    fTokenFactory = 0;
+    cleanUp();
 }
 
 // ---------------------------------------------------------------------------

Modified: xerces/c/trunk/src/xercesc/util/regx/RegularExpression.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/util/regx/RegularExpression.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/util/regx/RegularExpression.cpp (original)
+++ xerces/c/trunk/src/xercesc/util/regx/RegularExpression.cpp Mon Jun  6 10:41:39 2005
@@ -256,6 +256,9 @@
 // ---------------------------------------------------------------------------
 //  RegularExpression: Constructors and Destructors
 // ---------------------------------------------------------------------------
+
+typedef JanitorMemFunCall<RegularExpression>    CleanupType;
+
 RegularExpression::RegularExpression(const char* const pattern,
                                      MemoryManager* const manager)
 	:fHasBackReferences(false),
@@ -274,6 +277,8 @@
      fTokenFactory(0),
      fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &RegularExpression::cleanUp);
+
 	try {
 
 		XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
@@ -282,13 +287,12 @@
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 RegularExpression::RegularExpression(const char* const pattern,
@@ -310,6 +314,8 @@
      fTokenFactory(0),
      fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &RegularExpression::cleanUp);
+
 	try {
 
 		XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
@@ -320,13 +326,12 @@
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 
@@ -348,19 +353,20 @@
      fTokenFactory(0),
      fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &RegularExpression::cleanUp);
+
 	try {
 
 		setPattern(pattern);
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 RegularExpression::RegularExpression(const XMLCh* const pattern,
@@ -382,19 +388,20 @@
      fTokenFactory(0),
      fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &RegularExpression::cleanUp);
+
 	try {
 
 		setPattern(pattern, options);
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 RegularExpression::~RegularExpression() {
@@ -1567,7 +1574,6 @@
 }
 
 
-
 /*
  * Prepares for matching. This method is called during construction.
  */
@@ -1655,7 +1661,7 @@
 
 		if (isSet(fOptions, USE_UNICODE_CATEGORY)) {
 
-            if (fWordRange == 0) {
+			if (fWordRange == 0) {
 
 				fWordRange = fTokenFactory->getRange(fgUniIsWord);
 				if (fWordRange == 0)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -118,18 +118,7 @@
                         , MemoryManager* const manager)
 :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::AnyURI, manager)
 {
-    try
-    {
-        init(enums, manager);
-    }
-    catch(const OutOfMemoryException&)
-    {
-        throw;
-    }
-    catch (...)
-    {        
-        throw;
-    }
+    init(enums, manager);
 }
 
 DatatypeValidator* AnyURIDatatypeValidator::newInstance(

Modified: xerces/c/trunk/src/xercesc/validators/datatype/DateDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/DateDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/DateDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/DateDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -109,6 +109,7 @@
 XMLDateTime* DateDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -116,15 +117,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void DateDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -119,6 +119,7 @@
 XMLDateTime* DateTimeDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -126,15 +127,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void DateTimeDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/DayDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/DayDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/DayDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/DayDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -109,6 +109,7 @@
 XMLDateTime* DayDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -116,15 +117,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void DayDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -112,6 +112,7 @@
 XMLDateTime* DurationDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -119,15 +120,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void DurationDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/ListDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/ListDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/ListDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -430,6 +430,7 @@
                 {
                     // ask the itemType for a complete check
                     BaseRefVectorOf<XMLCh>* tempList = XMLString::tokenizeString(getEnumeration()->elementAt(i), manager);
+                    Janitor<BaseRefVectorOf<XMLCh> >    jan(tempList);
                     int tokenNumber = tempList->size();
 
                     try
@@ -439,15 +440,10 @@
                     }
                     catch(const OutOfMemoryException&)
                     {
+                        jan.release();
+
                         throw;
                     }
-                    catch (...)
-                    {
-                        delete tempList;
-                        throw;
-                    }
-
-                    delete tempList;
 
                     // enum shall pass this->checkContent() as well.
                     checkContent(getEnumeration()->elementAt(i), (ValidationContext*)0, false, manager);

Modified: xerces/c/trunk/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -109,6 +109,7 @@
 XMLDateTime* MonthDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -116,15 +117,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void MonthDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -109,6 +109,7 @@
 XMLDateTime* MonthDayDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -116,15 +117,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void MonthDayDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -122,6 +122,7 @@
 XMLDateTime* TimeDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -129,15 +130,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void TimeDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -173,6 +173,8 @@
     fMemberTypeValidators = memberTypeValidators;
 }
 
+typedef JanitorMemFunCall<UnionDatatypeValidator>   CleanupType;
+
 UnionDatatypeValidator::UnionDatatypeValidator(
                           DatatypeValidator*            const baseValidator
                         , RefHashTableOf<KVStringPair>* const facets
@@ -210,19 +212,22 @@
                 , manager);
     }
 
+    CleanupType cleanup(this, &UnionDatatypeValidator::cleanUp);
+
     try
     {
         init(baseValidator, facets, enums, manager);
     }
     catch(const OutOfMemoryException&)
     {
+        // Don't cleanup when out of memory, since executing the
+        // code can cause problems.
+        cleanup.release();
+
         throw;
     }
-    catch (...)
-    {
-        cleanUp();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 void UnionDatatypeValidator::init(DatatypeValidator*            const baseValidator

Modified: xerces/c/trunk/src/xercesc/validators/datatype/YearDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/YearDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/YearDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/YearDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -109,6 +109,7 @@
 XMLDateTime* YearDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -116,15 +117,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void YearDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp Mon Jun  6 10:41:39 2005
@@ -109,6 +109,7 @@
 XMLDateTime* YearMonthDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager)
 {
     XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager);
+    Janitor<XMLDateTime> jan(pRetDate);
 
     try
     {
@@ -116,15 +117,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch (...)
-    {
-        delete pRetDate;
+        jan.release();
+
         throw;
     }
 
-    return pRetDate;
+    return jan.release();
 }
 
 void YearMonthDatatypeValidator::parse(XMLDateTime* const pDate)

Modified: xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/SchemaGrammar.cpp Mon Jun  6 10:41:39 2005
@@ -138,6 +138,8 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
+typedef JanitorMemFunCall<SchemaGrammar>    CleanupType;
+
 // ---------------------------------------------------------------------------
 //  SchemaGrammar: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -160,6 +162,8 @@
     , fValidated(false)
     , fDatatypeRegistry(manager)
 {
+    CleanupType cleanup(this, &SchemaGrammar::cleanUp);
+
     //
     //  Init all the pool members.
     //
@@ -195,13 +199,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...) {
+        cleanup.release();
 
-        cleanUp();
         throw;
     }
+
+    cleanup.release();
 }
 
 SchemaGrammar::~SchemaGrammar()

Modified: xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/TraverseSchema.cpp Mon Jun  6 10:41:39 2005
@@ -158,6 +158,8 @@
     ENUM_ELT_SIZE
 };
 
+typedef JanitorMemFunCall<TraverseSchema>   CleanupType;
+
 // ---------------------------------------------------------------------------
 //  TraverseSchema: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -219,6 +221,7 @@
     , fAnnotation(0)
     , fAttributeCheck(manager)
 {
+    CleanupType cleanup(this, &TraverseSchema::cleanUp);
 
     try {
 
@@ -232,13 +235,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...) {
+        cleanup.release();
 
-        cleanUp();
         throw;
     }
+
+    cleanup.release();
 }
 
 

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.cpp Mon Jun  6 10:41:39 2005
@@ -52,10 +52,13 @@
 //  Includes
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/FieldValueMap.hpp>
+#include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
+typedef JanitorMemFunCall<FieldValueMap>    CleanupType;
+
 // ---------------------------------------------------------------------------
 //  FieldValueMap: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -74,34 +77,41 @@
     , fValues(0)
     , fMemoryManager(other.fMemoryManager)
 {
-    try {
-        if (other.fFields) {
+    if (other.fFields) {
+        CleanupType cleanup(this, &FieldValueMap::cleanUp);
+
+        try {
+
+                unsigned int valuesSize = other.fValues->size();
 
-            unsigned int valuesSize = other.fValues->size();
+                fFields = new (fMemoryManager) ValueVectorOf<IC_Field*>(*(other.fFields));
+                fValidators = new (fMemoryManager) ValueVectorOf<DatatypeValidator*>(*(other.fValidators));
+                fValues = new (fMemoryManager) RefArrayVectorOf<XMLCh>(other.fFields->curCapacity(), true, fMemoryManager);
 
-            fFields = new (fMemoryManager) ValueVectorOf<IC_Field*>(*(other.fFields));
-            fValidators = new (fMemoryManager) ValueVectorOf<DatatypeValidator*>(*(other.fValidators));
-            fValues = new (fMemoryManager) RefArrayVectorOf<XMLCh>(other.fFields->curCapacity(), true, fMemoryManager);
-
-            for (unsigned int i=0; i<valuesSize; i++) {
-                fValues->addElement(XMLString::replicate(other.fValues->elementAt(i), fMemoryManager));
-            }
+                for (unsigned int i=0; i<valuesSize; i++) {
+                    fValues->addElement(XMLString::replicate(other.fValues->elementAt(i), fMemoryManager));
+                }
+        }
+        catch(const OutOfMemoryException&)
+        {
+            cleanup.release();
+
+            throw;
         }
-    }
-    catch(const OutOfMemoryException&)
-    {
-        throw;
-    }
-    catch(...) {
 
-        delete fFields;
-        delete fValidators;
-        delete fValues;
-        throw;
+        cleanup.release();
     }
 }
 
 FieldValueMap::~FieldValueMap()
+{
+    cleanUp();
+}
+
+// ---------------------------------------------------------------------------
+//  FieldValueMap: Private helper methods.
+// ---------------------------------------------------------------------------
+void FieldValueMap::cleanUp()
 {
     delete fFields;
     delete fValidators;

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.hpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.hpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/FieldValueMap.hpp Mon Jun  6 10:41:39 2005
@@ -75,6 +75,11 @@
 
 private:
     // -----------------------------------------------------------------------
+    //  Private helper methods
+    // -----------------------------------------------------------------------
+    void cleanUp();
+
+    // -----------------------------------------------------------------------
     //  Unimplemented operators
     // -----------------------------------------------------------------------
     FieldValueMap& operator= (const FieldValueMap& other);

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraint.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraint.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraint.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraint.cpp Mon Jun  6 10:41:39 2005
@@ -77,6 +77,8 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
+typedef JanitorMemFunCall<IdentityConstraint>   CleanupType;
+
 // ---------------------------------------------------------------------------
 //  IdentityConstraint: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -90,19 +92,20 @@
     , fMemoryManager(manager)
     , fNamespaceURI(-1)
 {
+    CleanupType cleanup(this, &IdentityConstraint::cleanUp);
+
     try {
         fIdentityConstraintName = XMLString::replicate(identityConstraintName, fMemoryManager);
         fElemName = XMLString::replicate(elemName, fMemoryManager);
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...) {
+        cleanup.release();
 
-        cleanUp();
         throw;
     }
+
+    cleanup.release();
 }
 
 

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp Mon Jun  6 10:41:39 2005
@@ -41,6 +41,8 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
+typedef JanitorMemFunCall<IdentityConstraintHandler>    CleanupType;
+
 // ---------------------------------------------------------------------------
 //  IdentityConstraintHandler: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -52,6 +54,7 @@
 , fValueStoreCache(0)
 , fFieldActivator(0)
 {
+    CleanupType cleanup(this, &IdentityConstraintHandler::cleanUp);
 
     try {
 
@@ -63,12 +66,12 @@
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...) {
-        cleanUp();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 IdentityConstraintHandler::~IdentityConstraintHandler()

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/ValueStoreCache.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/ValueStoreCache.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/ValueStoreCache.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/ValueStoreCache.cpp Mon Jun  6 10:41:39 2005
@@ -65,6 +65,8 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
+typedef JanitorMemFunCall<ValueStoreCache>    CleanupType;
+
 // ---------------------------------------------------------------------------
 //  ValueStoreCache: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -76,17 +78,19 @@
     , fScanner(0)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &ValueStoreCache::cleanUp);
+
     try {
         init();
     }
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch(...) {
-        cleanUp();
-        throw;
-    }
+
+    cleanup.release();
 }
 
 

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcher.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcher.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcher.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcher.cpp Mon Jun  6 10:41:39 2005
@@ -73,6 +73,8 @@
 
 XERCES_CPP_NAMESPACE_BEGIN
 
+typedef JanitorMemFunCall<XPathMatcher>     CleanupType;
+
 // ---------------------------------------------------------------------------
 //  XPathMatcher: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -87,18 +89,19 @@
     , fIdentityConstraint(0)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &XPathMatcher::cleanUp);
+
     try {
         init(xpath);
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...) {
+        cleanup.release();
 
-        cleanUp();
         throw;
     }
+
+    cleanup.release();
 }
 
 
@@ -114,18 +117,19 @@
     , fIdentityConstraint(ic)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &XPathMatcher::cleanUp);
+
     try {
         init(xpath);
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...) {
+        cleanup.release();
 
-        cleanUp();
         throw;
     }
+
+    cleanup.release();
 }
 
 

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp Mon Jun  6 10:41:39 2005
@@ -43,34 +43,47 @@
 //  Includes
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/XPathMatcherStack.hpp>
+#include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
+typedef JanitorMemFunCall<XPathMatcherStack>    CleanupType;
+
 // ---------------------------------------------------------------------------
 //  XPathMatherStack: Constructors and Destructor
 // ---------------------------------------------------------------------------
 XPathMatcherStack::XPathMatcherStack(MemoryManager* const manager)
     : fMatchersCount(0)
-    , fContextStack(new (manager) ValueStackOf<int>(8, manager))
+    , fContextStack(0)
     , fMatchers(0)
 {
+    CleanupType cleanup(this, &XPathMatcherStack::cleanUp);
+
     try {
+        fContextStack = new (manager) ValueStackOf<int>(8, manager);
         fMatchers = new (manager) RefVectorOf<XPathMatcher>(8, true, manager);
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...) {
+        cleanup.release();
 
-        delete fContextStack;
         throw;
     }
+
+    cleanup.release();
 }
 
 XPathMatcherStack::~XPathMatcherStack() {
 
+    cleanUp();
+}
+
+// ---------------------------------------------------------------------------
+//  XPathMatcherStack: Private helper methods.
+// ---------------------------------------------------------------------------
+void XPathMatcherStack::cleanUp()
+{
     delete fContextStack;
     delete fMatchers;
 }

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp Mon Jun  6 10:41:39 2005
@@ -63,6 +63,11 @@
 
 private:
     // -----------------------------------------------------------------------
+    //  Private helper methods
+    // -----------------------------------------------------------------------
+    void cleanUp();
+
+    // -----------------------------------------------------------------------
     //  Unimplemented contstructors and operators
     // -----------------------------------------------------------------------
     XPathMatcherStack(const XPathMatcherStack& other);

Modified: xerces/c/trunk/src/xercesc/validators/schema/identity/XercesXPath.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/trunk/src/xercesc/validators/schema/identity/XercesXPath.cpp?rev=180348&r1=180347&r2=180348&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/schema/identity/XercesXPath.cpp (original)
+++ xerces/c/trunk/src/xercesc/validators/schema/identity/XercesXPath.cpp Mon Jun  6 10:41:39 2005
@@ -346,6 +346,8 @@
 {
 }
 
+typedef JanitorMemFunCall<XercesXPath>  CleanupType;
+
 // ---------------------------------------------------------------------------
 //  XercesPath: Constructors and Destructor
 // ---------------------------------------------------------------------------
@@ -360,6 +362,8 @@
     , fLocationPaths(0)
     , fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &XercesXPath::cleanUp);
+
     try
     {
         fExpression = XMLString::replicate(xpathExpr, fMemoryManager);
@@ -371,13 +375,12 @@
     }
     catch(const OutOfMemoryException&)
     {
-        throw;
-    }
-    catch(...) {
+        cleanup.release();
 
-        cleanUp();
         throw;
     }
+
+    cleanup.release();
 }
 
 XercesXPath::~XercesXPath() {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org