diff --git a/src/xercesc/util/regx/RegularExpression.cpp b/src/xercesc/util/regx/RegularExpression.cpp index afaeb5167c5dcd5644f69b123cb07535b98ca62f..12f528eb5d0857aa9d2e5a7fdb6c09f5652e6652 100644 --- a/src/xercesc/util/regx/RegularExpression.cpp +++ b/src/xercesc/util/regx/RegularExpression.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.16 2003/12/16 12:25:48 cargilld + * Change a conditional expression to an if-else to avoid a compiler problem. + * * Revision 1.15 2003/10/01 16:32:40 neilg * improve handling of out of memory conditions, bug #23415. Thanks to David Cargill. * @@ -431,9 +434,19 @@ void RegularExpression::setPattern(const XMLCh* const pattern, fOptions = parseOptions(options); fPattern = XMLString::replicate(pattern, fMemoryManager); - RegxParser* regxParser = isSet(fOptions, XMLSCHEMA_MODE) - ? new (fMemoryManager) ParserForXMLSchema(fMemoryManager) - : new (fMemoryManager) RegxParser(fMemoryManager); + // the following construct causes an error in an Intel 7.1 32 bit compiler for + // red hat linux 7.2 + // (when an exception is thrown the wrong object is deleted) + //RegxParser* regxParser = isSet(fOptions, XMLSCHEMA_MODE) + // ? new (fMemoryManager) ParserForXMLSchema(fMemoryManager) + // : new (fMemoryManager) RegxParser(fMemoryManager); + RegxParser* regxParser; + if (isSet(fOptions, XMLSCHEMA_MODE)) { + regxParser = new (fMemoryManager) ParserForXMLSchema(fMemoryManager); + } + else { + regxParser = new (fMemoryManager) RegxParser(fMemoryManager); + } if (regxParser) { regxParser->setTokenFactory(fTokenFactory);