More bug fixes for the parser and related classes.
2006-04-12 Lillian Angel <[EMAIL PROTECTED]>
* gnu/xml/dom/DomDocument.java
(checkNCName): Removed unneeded part of check.
* gnu/xml/dom/DomNode.java
(dispatchEvent): Added code to grow ancestors array
if needed. Changed checks to use depth of node instead.
Fixes an infinite loop and segmentation fault.
* gnu/xml/dom/html2/DomHTMLParser.java
(handleEndTag): No need to use/make a copy of the node.
Causes an infinite loop.
On Tue, 2006-04-11 at 14:07 -0400, Lillian Angel wrote:
> I have changed gcjwebplugin to use the parser in
> gnu/xml/dom/html2/*.
>
> I added some needed functions/classes. Also, fixed a few minor bugs in
> the parser and awt.
>
> 2006-04-11 Lillian Angel <[EMAIL PROTECTED]>
>
> * gnu/xml/dom/DomNodeIterator.java
> (nextNode): Moved line of code to avoid an infinite loop.
> * gnu/xml/dom/html2/DomHTMLAppletElement.java
> (getCls): New function.
> (setCls): Likewise.
> (getSrc): Likewise.
> (setSrc): Likewise.
> * gnu/xml/dom/html2/DomHTMLDocument.java:
> Added DomHTMLEmbedElement to map.
> (getApplets): Added node name, 'embed'.
> * gnu/xml/dom/html2/DomHTMLEmbedElement.java:
> New class.
> * gnu/xml/dom/html2/DomHTMLObjectElement.java
> (getJavaCode): New function.
> (setJavaCode): Likewise.
> (getObject): Likewise.
> (setObject): Likewise.
> (getJavaObject): Likewise.
> (setJavaObject): Likewise.
> (getJavaArchive): Likewise.
> (setJavaArchive): Likewise.
> (getJavaCodeBase): Likewise.
> (setJavaCodeBase): Likewise.
> (getJavaType): Likewise.
> (setJavaType): Likewise.
> (setMayscript): Likewise.
> (getMayscript): Likewise.
> (setScriptable): Likewise.
> (getScriptable): Likewise.
> * gnu/xml/dom/html2/DomHTMLParser.java
> (parseDocument): Should not check for well formedness
> when parsing an html document.
> * java/awt/Window.java
> (dispatchEvent): Added check to avoid NPE.
>
Index: gnu/xml/dom/DomDocument.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/xml/dom/DomDocument.java,v
retrieving revision 1.8
diff -u -r1.8 DomDocument.java
--- gnu/xml/dom/DomDocument.java 12 Jan 2006 16:35:52 -0000 1.8
+++ gnu/xml/dom/DomDocument.java 12 Apr 2006 16:04:42 -0000
@@ -535,8 +535,7 @@
int index = name.indexOf(':');
if (index != -1)
{
- if (index == 0 || index == (len - 1) ||
- name.lastIndexOf(':') != index)
+ if (index == 0 || name.lastIndexOf(':') != index)
{
throw new DomDOMException(DOMException.NAMESPACE_ERR,
name, null, 0);
Index: gnu/xml/dom/DomNode.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/xml/dom/DomNode.java,v
retrieving revision 1.13
diff -u -r1.13 DomNode.java
--- gnu/xml/dom/DomNode.java 12 Jan 2006 19:46:59 -0000 1.13
+++ gnu/xml/dom/DomNode.java 12 Apr 2006 16:04:42 -0000
@@ -1120,7 +1120,6 @@
node.appendChild(newChild);
}
}
-
if (nodeType == ENTITY_REFERENCE_NODE)
{
node.makeReadonly();
@@ -1556,23 +1555,30 @@
ancestorLen = ancestors.length;
}
- // XXX autogrow ancestors ... based on statistics
-
// Climb to the top of this subtree and handle capture, letting
// each node (from the top down) capture until one stops it or
// until we get to this one.
-
- for (index = 0, current = parent;
- current != null && index < ancestorLen;
- index++, current = current.parent)
+ current = parent;
+ if (current.depth >= ANCESTORS_INIT)
+ {
+ DomNode[] newants = new DomNode[current.depth + 1];
+ System.arraycopy(ancestors, 0, newants, 0, ancestors.length);
+ ancestors = newants;
+ ancestorLen = ancestors.length;
+ }
+ for (index = 0; index < ancestorLen; index++)
{
+ if (current == null || current.depth == 0)
+ break;
+
if (current.nListeners != 0)
{
haveAncestorRegistrations = true;
}
ancestors [index] = current;
+ current = current.parent;
}
- if (current != null)
+ if (current.depth > 0)
{
throw new RuntimeException("dispatchEvent capture stack size");
}
Index: gnu/xml/dom/html2/DomHTMLParser.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/xml/dom/html2/DomHTMLParser.java,v
retrieving revision 1.4
diff -u -r1.4 DomHTMLParser.java
--- gnu/xml/dom/html2/DomHTMLParser.java 11 Apr 2006 18:05:49 -0000 1.4
+++ gnu/xml/dom/html2/DomHTMLParser.java 12 Apr 2006 16:04:42 -0000
@@ -225,7 +225,6 @@
open.addFirst(close);
close = close.getParentNode();
}
-
if (close == null)
cursor = document;
else
@@ -236,9 +235,8 @@
while (iter.hasNext())
{
Node item = (Node) iter.next();
- Node copy = item.cloneNode(true);
- cursor.appendChild(copy);
- cursor = copy;
+ cursor.appendChild(item);
+ cursor = item;
}
}
}