From 30ca00b9f778b41be0efd3eb320f8661325c7b11 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov <borisk@apache.org> Date: Wed, 18 Nov 2009 09:08:16 +0000 Subject: [PATCH] Commit a partial fix for XERCESC-1866 by David Bertoni. git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@881702 13f79535-47bb-0310-9956-ffa450edef68 --- src/xercesc/util/regx/RangeToken.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/xercesc/util/regx/RangeToken.cpp b/src/xercesc/util/regx/RangeToken.cpp index f2bc7e00c..6e0880a29 100644 --- a/src/xercesc/util/regx/RangeToken.cpp +++ b/src/xercesc/util/regx/RangeToken.cpp @@ -72,6 +72,12 @@ RangeToken::RangeToken(const Token::tokType tkType, RangeToken::~RangeToken() { + // TODO(dbertoni) This is a temporary hack until we can change the ABI. + // See Jira issue XERCESC-1866 for more details. + if (fCaseIToken && fCaseIToken->fCaseIToken == this) + { + fCaseIToken->fCaseIToken = 0; + } fMemoryManager->deallocate(fMap);//delete [] fMap; fMemoryManager->deallocate(fRanges);//delete[] fRanges; } @@ -286,6 +292,12 @@ RangeToken* RangeToken::getCaseInsensitiveToken(TokenFactory* const tokFactory) lwrToken->createMap(); fCaseIToken = lwrToken; + // TODO(dbertoni) This is a temporary hack until we can change the ABI. + // See Jira issue XERCESC-1866 for more details. + // Overload the fCaseIToken data member to be the case-insensitive token + // that's caching the case-insensitive one. We need this because tokens + // have varying lifetimes. + fCaseIToken->setCaseInsensitiveToken(this); } return fCaseIToken; -- GitLab