Reviewed by Darin and Dave a while ago.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Feb 2005 03:41:55 +0000 (03:41 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Feb 2005 03:41:55 +0000 (03:41 +0000)
<rdar://problem/3996685> REGRESSION: Crash in KWQVectorImpl::at loading http://maps.google.com/mapfiles/homepanel.xsl

* kwq/WebCoreBridge.mm:
        (formElementFromDOMElement): Check for isHTMLElement() as well as
id() == ID_FORM. This seems like an impossible situation, but
papering over it seems more expedient for the time being.

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

WebCore/ChangeLog-2005-08-23
WebCore/kwq/WebCoreBridge.mm

index 5f8fe363e18f7fe3f47b9c2d7e98d7532f26bbdb..ebe73776f409b796b64524a68e5eacd521a082e9 100644 (file)
@@ -1,3 +1,14 @@
+2005-02-24  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin and Dave a while ago.
+
+       <rdar://problem/3996685> REGRESSION: Crash in KWQVectorImpl::at loading http://maps.google.com/mapfiles/homepanel.xsl
+        
+       * kwq/WebCoreBridge.mm:
+        (formElementFromDOMElement): Check for isHTMLElement() as well as
+       id() == ID_FORM. This seems like an impossible situation, but
+       papering over it seems more expedient for the time being.
+
 2005-02-24  Richard Williamson   <rjw@apple.com>
 
        Fixed <rdar://problem/3382926> Bidi neutrals at RTL/LTR boundaries not handled correctly.
index 540447e5fdc84e5f0d8186fd034708d4b3f6c21e..329491e5132d7b0c6da95e09d955ed5a47070757 100644 (file)
@@ -905,7 +905,11 @@ static HTMLInputElementImpl *inputElementFromDOMElement(DOMElement *element)
 static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
 {
     NodeImpl *node = [element _nodeImpl];
-    if (node && idFromNode(node) == ID_FORM) {
+    // This should not be necessary, but an XSL file on
+    // maps.google.com crashes otherwise because it is an xslt file
+    // that contains <form> elements that aren't in any namespace, so
+    // they come out as generic CML elements
+    if (node && node->isHTMLElement() && idFromNode(node) == ID_FORM) {
         return static_cast<HTMLFormElementImpl *>(node);
     }
     return nil;