From 86d6d8caec690771fdb5d0bfcdcc859fafb24c68 Mon Sep 17 00:00:00 2001 From: Khaled Noaman <knoaman@apache.org> Date: Sun, 25 May 2003 21:42:41 +0000 Subject: [PATCH] Allocate/Deallocate Context::xxx only when necessary. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@175046 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/util/regx/RegularExpression.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/xercesc/util/regx/RegularExpression.cpp b/src/xercesc/util/regx/RegularExpression.cpp index 764ff2d3e..9990f4d5c 100644 --- a/src/xercesc/util/regx/RegularExpression.cpp +++ b/src/xercesc/util/regx/RegularExpression.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.13 2003/05/25 21:42:41 knoaman + * Allocate/Deallocate Context::xxx only when necessary. + * * Revision 1.12 2003/05/18 14:02:06 knoaman * Memory manager implementation: pass per instance manager. * @@ -177,7 +180,9 @@ RegularExpression::Context::Context(MemoryManager* const manager) : RegularExpression::Context::~Context() { - fMemoryManager->deallocate(fOffsets);//delete [] fOffsets; + if (fOffsets) + fMemoryManager->deallocate(fOffsets);//delete [] fOffsets; + fMemoryManager->deallocate(fString);//delete [] fString; if (fAdoptMatch) @@ -191,7 +196,9 @@ void RegularExpression::Context::reset(const XMLCh* const string , const int start, const int limit , const int noClosures) { - fMemoryManager->deallocate(fString);//delete [] fString; + if (fString) + fMemoryManager->deallocate(fString);//delete [] fString; + fString = XMLString::replicate(string, fMemoryManager); fStart = start; fLimit = limit; @@ -201,7 +208,8 @@ void RegularExpression::Context::reset(const XMLCh* const string delete fMatch; fMatch = 0; - if (fOffsets == 0 || fSize != noClosures) { + + if (fSize != noClosures) { if (fOffsets) fMemoryManager->deallocate(fOffsets);//delete [] fOffsets; -- GitLab