elena       2002/08/20 15:11:55

  Modified:    java/src/org/apache/xerces/parsers AbstractDOMParser.java
  Log:
  Applied patch from Philippe Le Hegaret: NPE parsing entity with no value.
  
  Revision  Changes    Path
  1.70      +22 -19    
xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java
  
  Index: AbstractDOMParser.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/parsers/AbstractDOMParser.java,v
  retrieving revision 1.69
  retrieving revision 1.70
  diff -u -r1.69 -r1.70
  --- AbstractDOMParser.java    14 Aug 2002 17:52:52 -0000      1.69
  +++ AbstractDOMParser.java    20 Aug 2002 22:11:55 -0000      1.70
  @@ -1496,24 +1496,27 @@
                   NodeList children = fCurrentNode.getChildNodes();
                   Node parent = fCurrentNode.getParentNode();
                   int length = children.getLength();
  -                // get previous sibling of the entity reference
  -                Node node = fCurrentNode.getPreviousSibling();
  -                // normalize text nodes
  -                Node child = children.item(0);
  -                if (node != null && node.getNodeType() == Node.TEXT_NODE &&
  -                    child.getNodeType() == Node.TEXT_NODE) {
  -                    ((Text)node).appendData(child.getNodeValue());
  -                    fCurrentNode.removeChild(child);
  +                if (length > 0) {
  +                
  +                    // get previous sibling of the entity reference
  +                    Node node = fCurrentNode.getPreviousSibling();
  +                    // normalize text nodes
  +                    Node child = children.item(0);
  +                    if (node != null && node.getNodeType() == Node.TEXT_NODE &&
  +                        child.getNodeType() == Node.TEXT_NODE) {
  +                        ((Text)node).appendData(child.getNodeValue());
  +                        fCurrentNode.removeChild(child);
   
  -                } else {
  -                    node = parent.insertBefore(child, fCurrentNode);
  -                    handleBaseURI(node);
  -                }
  +                    } else {
  +                        node = parent.insertBefore(child, fCurrentNode);
  +                        handleBaseURI(node);
  +                    }
   
  -                for (int i=1;i <length;i++) {
  -                    node = parent.insertBefore(children.item(0), fCurrentNode);
  -                    handleBaseURI(node);
  -                }
  +                    for (int i=1;i <length;i++) {
  +                        node = parent.insertBefore(children.item(0), fCurrentNode);
  +                        handleBaseURI(node);
  +                    }
  +                } // length > 0
                   parent.removeChild(fCurrentNode);
                   fCurrentNode = parent;
               }
  
  
  

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

Reply via email to