Reviewed by Trey.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Mar 2003 18:28:40 +0000 (18:28 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Mar 2003 18:28:40 +0000 (18:28 +0000)
- fixed 3180364 -- infinite loop in JavaScript at www.vw.dk (due to document.anchors problem) leads to hang

        The underlying problem was that our document.anchors had all the anchors in it.
        But here's what the Gecko DOM reference documentation says about document.anchors:
        "For reasons of backwards compatibility, the returned set of anchors only contains
        those anchors created with the name attribute, not those created with the id attribute."

        * khtml/html/html_miscimpl.cpp:
        (HTMLCollectionImpl::calcLength): Include only A elements with NAME attributes in the DOC_ANCHORS case.
        (HTMLCollectionImpl::getItem): Ditto.
        (HTMLCollectionImpl::getNamedItem): Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@3725 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2003-10-25
WebCore/ChangeLog-2005-08-23
WebCore/khtml/html/html_miscimpl.cpp

index 0cbaff9..c04996b 100644 (file)
@@ -1,3 +1,19 @@
+2003-03-03  Darin Adler  <darin@apple.com>
+
+        Reviewed by Trey.
+
+       - fixed 3180364 -- infinite loop in JavaScript at www.vw.dk (due to document.anchors problem) leads to hang
+
+        The underlying problem was that our document.anchors had all the anchors in it.
+        But here's what the Gecko DOM reference documentation says about document.anchors:
+        "For reasons of backwards compatibility, the returned set of anchors only contains
+        those anchors created with the name attribute, not those created with the id attribute."
+
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::calcLength): Include only A elements with NAME attributes in the DOC_ANCHORS case.
+        (HTMLCollectionImpl::getItem): Ditto.
+        (HTMLCollectionImpl::getNamedItem): Ditto.
+
 2003-03-02  Trey Matteson  <trey@apple.com>
 
        Use a KWQPopUpButton in place of NSPopUpButton.  The only addition is that
index 0cbaff9..c04996b 100644 (file)
@@ -1,3 +1,19 @@
+2003-03-03  Darin Adler  <darin@apple.com>
+
+        Reviewed by Trey.
+
+       - fixed 3180364 -- infinite loop in JavaScript at www.vw.dk (due to document.anchors problem) leads to hang
+
+        The underlying problem was that our document.anchors had all the anchors in it.
+        But here's what the Gecko DOM reference documentation says about document.anchors:
+        "For reasons of backwards compatibility, the returned set of anchors only contains
+        those anchors created with the name attribute, not those created with the id attribute."
+
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::calcLength): Include only A elements with NAME attributes in the DOC_ANCHORS case.
+        (HTMLCollectionImpl::getItem): Ditto.
+        (HTMLCollectionImpl::getNamedItem): Ditto.
+
 2003-03-02  Trey Matteson  <trey@apple.com>
 
        Use a KWQPopUpButton in place of NSPopUpButton.  The only addition is that
index 4bd221a..1513d54 100644 (file)
@@ -118,9 +118,7 @@ unsigned long HTMLCollectionImpl::calcLength(NodeImpl *current) const
                         len++;
                 break;
             case DOC_ANCHORS:      // all A elements with a value for name and all elements with an id attribute
-                if ( e->hasID() )
-                    len++;
-                else if(e->id() == ID_A) {
+                if(e->id() == ID_A) {
                     if(!e->getAttribute(ATTR_NAME).isNull())
                         len++;
                 }
@@ -205,9 +203,7 @@ NodeImpl *HTMLCollectionImpl::getItem(NodeImpl *current, int index, int &len) co
                         len++;
                 break;
             case DOC_ANCHORS:      // all A elements with a value for name or an id attribute
-                if( e->hasID() )
-                    len++;
-                else if(e->id() == ID_A)
+                if(e->id() == ID_A)
                     if(!e->getAttribute(ATTR_NAME).isNull())
                         len++;
                 break;
@@ -331,9 +327,7 @@ NodeImpl *HTMLCollectionImpl::getNamedItem( NodeImpl *current, int attr_id,
                         check = true;
                 break;
             case DOC_ANCHORS:      // all A elements with a value for name
-                if( e->hasID() )
-                    check = true;
-                else if(e->id() == ID_A)
+                if(e->id() == ID_A)
                     if(!e->getAttribute(ATTR_NAME).isNull())
                         check = true;
                 break;