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

svn commit: r191691 - in /xerces/c/branches/xerces-2.7/src/xercesc/util/regx: BMPattern.cpp RangeTokenMap.cpp RegularExpression.cpp

Author: cargilld
Date: Tue Jun 21 10:28:38 2005
New Revision: 191691

URL: http://svn.apache.org/viewcvs?rev=191691&view=rev
Log:
Add back changes Bertoni made that were overwritten.

Modified:
    xerces/c/branches/xerces-2.7/src/xercesc/util/regx/BMPattern.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RangeTokenMap.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RegularExpression.cpp

Modified: xerces/c/branches/xerces-2.7/src/xercesc/util/regx/BMPattern.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/util/regx/BMPattern.cpp?rev=191691&r1=191690&r2=191691&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/regx/BMPattern.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/regx/BMPattern.cpp Tue Jun 21 10:28:38 2005
@@ -32,6 +32,9 @@
 // ---------------------------------------------------------------------------
 //  BMPattern: Constructors
 // ---------------------------------------------------------------------------
+
+typedef JanitorMemFunCall<BMPattern>    CleanupType;
+
 BMPattern::BMPattern( const XMLCh*         const pattern
                     ,       bool                 ignoreCase
                     ,       MemoryManager* const manager) :
@@ -43,19 +46,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
@@ -70,19 +74,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/branches/xerces-2.7/src/xercesc/util/regx/RangeTokenMap.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RangeTokenMap.cpp?rev=191691&r1=191690&r2=191691&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RangeTokenMap.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RangeTokenMap.cpp Tue Jun 21 10:28:38 2005
@@ -34,6 +34,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
 
@@ -104,6 +105,9 @@
 // ---------------------------------------------------------------------------
 //  RangeTokenMap: Constructors and Destructor
 // ---------------------------------------------------------------------------
+
+typedef JanitorMemFunCall<RangeTokenMap>    CleanupType;
+
 RangeTokenMap::RangeTokenMap(MemoryManager* manager) :
     fTokenRegistry(0)
     , fRangeMap(0)
@@ -111,6 +115,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);
@@ -118,25 +124,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/branches/xerces-2.7/src/xercesc/util/regx/RegularExpression.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RegularExpression.cpp?rev=191691&r1=191690&r2=191691&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RegularExpression.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/util/regx/RegularExpression.cpp Tue Jun 21 10:28:38 2005
@@ -157,6 +157,9 @@
 // ---------------------------------------------------------------------------
 //  RegularExpression: Constructors and Destructors
 // ---------------------------------------------------------------------------
+
+typedef JanitorMemFunCall<RegularExpression>    CleanupType;
+
 RegularExpression::RegularExpression(const char* const pattern,
                                      MemoryManager* const manager)
 	:fHasBackReferences(false),
@@ -175,6 +178,8 @@
      fTokenFactory(0),
      fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &RegularExpression::cleanUp);
+
 	try {
 
 		XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
@@ -183,13 +188,12 @@
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 RegularExpression::RegularExpression(const char* const pattern,
@@ -211,6 +215,8 @@
      fTokenFactory(0),
      fMemoryManager(manager)
 {
+    CleanupType cleanup(this, &RegularExpression::cleanUp);
+
 	try {
 
 		XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
@@ -221,13 +227,12 @@
 	}
     catch(const OutOfMemoryException&)
     {
+        cleanup.release();
+
         throw;
     }
-    catch (...) {
 
-		cleanUp();
-		throw;
-	}
+    cleanup.release();
 }
 
 
@@ -249,19 +254,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,
@@ -283,19 +289,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() {
@@ -1468,7 +1475,6 @@
 }
 
 
-
 /*
  * Prepares for matching. This method is called during construction.
  */
@@ -1556,7 +1562,7 @@
 
 		if (isSet(fOptions, USE_UNICODE_CATEGORY)) {
 
-            if (fWordRange == 0) {
+			if (fWordRange == 0) {
 
 				fWordRange = fTokenFactory->getRange(fgUniIsWord);
 				if (fWordRange == 0)



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