peiyongz    2004/02/03 08:43:14

  Modified:    c/src/xercesc/internal DGXMLScanner.cpp IGXMLScanner.cpp
  Log:
  Fix to Bug#26315
  
  Revision  Changes    Path
  1.41      +18 -3     xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp
  
  Index: DGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- DGXMLScanner.cpp  29 Jan 2004 11:46:30 -0000      1.40
  +++ DGXMLScanner.cpp  3 Feb 2004 16:43:14 -0000       1.41
  @@ -825,11 +825,26 @@
           // this will break getRootElemId on DTDGrammar when
           // cached grammars are in use, but 
           // why would one use this anyway???
  -        ((DTDGrammar*)fGrammar)->setRootElemId(fGrammar->putElemDecl(rootDecl));
  +        try {
  +            ((DTDGrammar*)fGrammar)->setRootElemId(fGrammar->putElemDecl(rootDecl));
  +        }
  +        catch(const XMLException&)
  +        {
  +            delete rootDecl;
  +            throw;
  +        }
       } else 
       {
           // put this in the undeclared pool so it gets deleted...
  -        rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl));
  +        XMLElementDecl* elemDecl = 
fDTDElemNonDeclPool->getByKey(bbRootName.getRawBuffer());
  +        if (elemDecl)
  +        {
  +            rootDecl->setId(elemDecl->getId());
  +        }
  +        else
  +        {
  +            rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl));
  +        }
       }
   
       // Skip any spaces after the name
  
  
  
  1.59      +10 -2     xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp
  
  Index: IGXMLScanner.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v
  retrieving revision 1.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- IGXMLScanner.cpp  29 Jan 2004 11:46:30 -0000      1.58
  +++ IGXMLScanner.cpp  3 Feb 2004 16:43:14 -0000       1.59
  @@ -1386,7 +1386,15 @@
       } else
       {
           // attach this to the undeclared element pool so that it gets deleted
  -        rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl));
  +        XMLElementDecl* elemDecl = 
fDTDElemNonDeclPool->getByKey(bbRootName.getRawBuffer());
  +        if (elemDecl)
  +        {
  +            rootDecl->setId(elemDecl->getId());
  +        }
  +        else
  +        {
  +            rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl));
  +        }
       }
   
       // Skip any spaces after the name
  
  
  

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

Reply via email to