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