peiyongz    2004/01/13 12:05:00

  Modified:    c/src/xercesc/util/regx RegularExpression.cpp
                        RegularExpression.hpp
  Log:
  revert code back to previous version
  
  Revision  Changes    Path
  1.22      +83 -70    xml-xerces/c/src/xercesc/util/regx/RegularExpression.cpp
  
  Index: RegularExpression.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/RegularExpression.cpp,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- RegularExpression.cpp     13 Jan 2004 16:34:22 -0000      1.21
  +++ RegularExpression.cpp     13 Jan 2004 20:05:00 -0000      1.22
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2001-2004 The Apache Software Foundation.  All rights
  + * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -56,11 +56,8 @@
   
   /*
    * $Log$
  - * Revision 1.21  2004/01/13 16:34:22  cargilld
  - * Misc memory management changes.
  - *
  - * Revision 1.20  2004/01/06 18:12:31  peiyongz
  - * using ctor/setPattern to avoid exception thrown from ctor
  + * Revision 1.22  2004/01/13 20:05:00  peiyongz
  + * revert code back to previous version
    *
    * Revision 1.19  2003/12/24 15:24:15  cargilld
    * More updates to memory management so that the static memory manager.
  @@ -305,9 +302,21 @@
        fTokenFactory(0),
        fMemoryManager(manager)
   {
  -    XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
  -    ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
  -    setPattern(tmpBuf);
  +     try {
  +
  +             XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
  +        ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
  +             setPattern(tmpBuf);
  +     }
  +    catch(const OutOfMemoryException&)
  +    {
  +        throw;
  +    }
  +    catch (...) {
  +
  +             cleanUp();
  +             throw;
  +     }
   }
   
   RegularExpression::RegularExpression(const char* const pattern,
  @@ -329,11 +338,23 @@
        fTokenFactory(0),
        fMemoryManager(manager)
   {
  -    XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
  -    ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
  -    XMLCh* tmpOptions = XMLString::transcode(options, fMemoryManager);
  -    ArrayJanitor<XMLCh> janOps(tmpOptions, fMemoryManager);
  -    setPattern(tmpBuf, tmpOptions);
  +     try {
  +
  +             XMLCh* tmpBuf = XMLString::transcode(pattern, fMemoryManager);
  +             ArrayJanitor<XMLCh> janBuf(tmpBuf, fMemoryManager);
  +             XMLCh* tmpOptions = XMLString::transcode(options, fMemoryManager);
  +             ArrayJanitor<XMLCh> janOps(tmpOptions, fMemoryManager);
  +             setPattern(tmpBuf, tmpOptions);
  +     }
  +    catch(const OutOfMemoryException&)
  +    {
  +        throw;
  +    }
  +    catch (...) {
  +
  +             cleanUp();
  +             throw;
  +     }
   }
   
   
  @@ -355,7 +376,19 @@
        fTokenFactory(0),
        fMemoryManager(manager)
   {
  -    setPattern(pattern);
  +     try {
  +
  +             setPattern(pattern);
  +     }
  +    catch(const OutOfMemoryException&)
  +    {
  +        throw;
  +    }
  +    catch (...) {
  +
  +             cleanUp();
  +             throw;
  +     }
   }
   
   RegularExpression::RegularExpression(const XMLCh* const pattern,
  @@ -377,7 +410,19 @@
        fTokenFactory(0),
        fMemoryManager(manager)
   {
  -    setPattern(pattern, options);
  +     try {
  +
  +             setPattern(pattern, options);
  +     }
  +    catch(const OutOfMemoryException&)
  +    {
  +        throw;
  +    }
  +    catch (...) {
  +
  +             cleanUp();
  +             throw;
  +     }
   }
   
   RegularExpression::~RegularExpression() {
  @@ -385,70 +430,38 @@
        cleanUp();
   }
   
  -RegularExpression::RegularExpression(MemoryManager* const manager)
  -     :fHasBackReferences(false),
  -      fFixedStringOnly(false),
  -      fNoGroups(0),
  -      fMinLength(0),
  -      fNoClosures(0),
  -      fOptions(0),
  -      fBMPattern(0),
  -      fPattern(0),
  -      fFixedString(0),
  -      fOperations(0),
  -      fTokenTree(0),
  -      fFirstChar(0),
  -     fOpFactory(manager),
  -     fTokenFactory(0),
  -     fMemoryManager(manager)
  -{
  -}
  -
   // ---------------------------------------------------------------------------
   //  RegularExpression: Setter methods
   // ---------------------------------------------------------------------------
   void RegularExpression::setPattern(const XMLCh* const pattern,
                                                                   const XMLCh* const 
options) {
   
  -     try {
  -
  -        fTokenFactory = new (fMemoryManager) TokenFactory(fMemoryManager);
  -        fOptions = parseOptions(options);
  -        fPattern = XMLString::replicate(pattern, 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);
  -        }
  +    fTokenFactory = new (fMemoryManager) TokenFactory(fMemoryManager);
  +     fOptions = parseOptions(options);
  +     fPattern = XMLString::replicate(pattern, 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);
  +    }
   
  -        Janitor<RegxParser> janRegxParser(regxParser);
  -        fTokenTree = regxParser->parse(fPattern, fOptions);
  -        fNoGroups = regxParser->getNoParen();
  -        fHasBackReferences = regxParser->hasBackReferences();
  -     }
  -    catch(const OutOfMemoryException&)
  -    {
  -        throw;
  +    if (regxParser) {
  +        regxParser->setTokenFactory(fTokenFactory);
       }
  -    catch (...) {
   
  -             cleanUp();
  -             throw;
  -     }
  +     Janitor<RegxParser> janRegxParser(regxParser);
  +     fTokenTree = regxParser->parse(fPattern, fOptions);
  +     fNoGroups = regxParser->getNoParen();
  +     fHasBackReferences = regxParser->hasBackReferences();
   }
   
   // ---------------------------------------------------------------------------
  @@ -1444,7 +1457,7 @@
        case Token::T_BACKREFERENCE:
        case Token::T_EMPTY:
                ret = compileSingle(token, next, tokenType);
  -                break;
  +             break;
        case Token::T_CONCAT:
                ret = compileConcat(token, next, reverse);
                break;
  
  
  
  1.17      +9 -33     xml-xerces/c/src/xercesc/util/regx/RegularExpression.hpp
  
  Index: RegularExpression.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/regx/RegularExpression.hpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- RegularExpression.hpp     6 Jan 2004 18:12:31 -0000       1.16
  +++ RegularExpression.hpp     13 Jan 2004 20:05:00 -0000      1.17
  @@ -113,16 +113,6 @@
       );
       ~RegularExpression();
   
  -    RegularExpression
  -    (
  -        MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
  -    );
  -
  -    // -----------------------------------------------------------------------
  -    //  Setter methods
  -    // -----------------------------------------------------------------------
  -    void setPattern(const XMLCh* const pattern, const XMLCh* const options=0);
  -
       // -----------------------------------------------------------------------
       //  Public Constants
       // -----------------------------------------------------------------------
  @@ -230,6 +220,11 @@
       void cleanUp();
   
       // -----------------------------------------------------------------------
  +    //  Setter methods
  +    // -----------------------------------------------------------------------
  +    void setPattern(const XMLCh* const pattern, const XMLCh* const options=0);
  +
  +    // -----------------------------------------------------------------------
       //  Private Helper methods
       // -----------------------------------------------------------------------
       void prepare();
  @@ -346,29 +341,10 @@
     // ---------------------------------------------------------------------------
     inline void RegularExpression::cleanUp() {
   
  -      if (fPattern)
  -      {
  -          fMemoryManager->deallocate(fPattern);//delete [] fPattern;
  -          fPattern = 0;
  -      }
  -
  -      if (fFixedString)
  -      {
  -          fMemoryManager->deallocate(fFixedString);//delete [] fFixedString;      
  -          fFixedString = 0;
  -      }
  -
  -      if (fBMPattern)
  -      {
  -          delete fBMPattern;
  -          fBMPattern = 0;
  -      }
  -
  -      if (fTokenFactory)
  -      {
  -          delete fTokenFactory;
  -          fTokenFactory = 0;
  -      }
  +      fMemoryManager->deallocate(fPattern);//delete [] fPattern;
  +      fMemoryManager->deallocate(fFixedString);//delete [] fFixedString;      
  +      delete fBMPattern;
  +      delete fTokenFactory;
     }
   
     // ---------------------------------------------------------------------------
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to