tng         2003/02/06 06:08:40

  Modified:    c/src/xercesc/dom/impl DOMDocumentImpl.cpp
  Log:
  restore the fDocType and fDocElement if replace failed.
  
  Revision  Changes    Path
  1.31      +18 -8     xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.cpp
  
  Index: DOMDocumentImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMDocumentImpl.cpp,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- DOMDocumentImpl.cpp       5 Feb 2003 21:21:37 -0000       1.30
  +++ DOMDocumentImpl.cpp       6 Feb 2003 14:08:39 -0000       1.31
  @@ -493,19 +493,29 @@
   
   
   DOMNode* DOMDocumentImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {
  +    DOMDocumentType* tempDocType = fDocType;
  +    DOMElement* tempDocElement = fDocElement;
  +
       if(oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE)
           fDocType=0;
       else if(oldChild->getNodeType() == DOMNode::ELEMENT_NODE)
           fDocElement=0;
   
  -    insertBefore(newChild, oldChild);
  -    // changed() already done.
  +    try {
  +        insertBefore(newChild, oldChild);
  +        // changed() already done.
   
  -    if((oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE)
  -    || (oldChild->getNodeType() == DOMNode::ELEMENT_NODE))
  -        return fParent.removeChild(oldChild);
  -    else
  -        return removeChild(oldChild);
  +        if((oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE)
  +        || (oldChild->getNodeType() == DOMNode::ELEMENT_NODE))
  +            return fParent.removeChild(oldChild);
  +        else
  +            return removeChild(oldChild);
  +    }
  +    catch(...) {
  +        fDocType = tempDocType;
  +        fDocElement = tempDocElement;
  +        throw;
  +    }
   }
   
   bool DOMDocumentImpl::isXMLName(const XMLCh *s)
  
  
  

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

Reply via email to