You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2002/07/30 15:31:07 UTC

cvs commit: xml-xerces/c/src/xercesc/dom/impl DOMEntityImpl.hpp DOMEntityImpl.cpp

knoaman     2002/07/30 06:31:07

  Modified:    c/src/xercesc/dom/impl DOMEntityImpl.hpp DOMEntityImpl.cpp
  Log:
  Clone entity ref nodes only once.
  
  Revision  Changes    Path
  1.3       +2 -2      xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.hpp
  
  Index: DOMEntityImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.hpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DOMEntityImpl.hpp	7 Jun 2002 18:39:47 -0000	1.2
  +++ DOMEntityImpl.hpp	30 Jul 2002 13:31:07 -0000	1.3
  @@ -92,7 +92,7 @@
       XMLCh*                fActualEncoding;
       XMLCh*                fEncoding;
       XMLCh*                fVersion;
  -
  +    bool                  fEntityRefNodeCloned;
       // private helper function
       void	cloneEntityRefTree() const;
   
  
  
  
  1.7       +10 -3     xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.cpp
  
  Index: DOMEntityImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/dom/impl/DOMEntityImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DOMEntityImpl.cpp	15 Jul 2002 19:22:22 -0000	1.6
  +++ DOMEntityImpl.cpp	30 Jul 2002 13:31:07 -0000	1.7
  @@ -72,7 +72,8 @@
        fSystemId(0),
        fActualEncoding(0),
        fEncoding(0),
  -     fVersion(0)
  +     fVersion(0),
  +     fEntityRefNodeCloned(false)
   {
       fRefEntity  = 0;
       fName        = ((DOMDocumentImpl *)ownerDoc)->getPooledString(eName);
  @@ -85,7 +86,8 @@
         fParent(other.fParent),
         fActualEncoding(other.fActualEncoding),
         fEncoding(other.fEncoding),
  -      fVersion(other.fVersion)
  +      fVersion(other.fVersion),
  +      fEntityRefNodeCloned(false)
   {
       fName            = other.fName;
       if (deep)
  @@ -178,10 +180,14 @@
   
   void  DOMEntityImpl::cloneEntityRefTree() const
   {
  +    if (fEntityRefNodeCloned)
  +        return;
  +
       // cast off const.  This method is const because it is
       //   called from a bunch of logically const methods, like
       //   getFirstChild().
       DOMEntityImpl *ncThis = (DOMEntityImpl *)this;
  +
       //lazily clone the entityRef tree to this entity
       if (fParent.fFirstChild != 0)
           return;
  @@ -189,6 +195,7 @@
       if (!fRefEntity)
           return;
   
  +    ncThis->fEntityRefNodeCloned = true;
       ncThis->fNode.setReadOnly(false, true);
       ncThis->fParent.cloneChildren(fRefEntity);
       ncThis->fNode.setReadOnly(true, true);
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org