Reviewed by Darin.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Mar 2004 21:15:12 +0000 (21:15 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Mar 2004 21:15:12 +0000 (21:15 +0000)
<rdar://problem/3549201>: repro crash in KHTMLPart::begin inside JavaScript code (gmpartsdirect.com)

Added some null checks. I am not sure why this page attaches a
document that has no view, but these changes make it work
perfectly.

* khtml/khtml_part.cpp:
        (KHTMLPart::begin): Add check for null view before use.  *
khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::close): ditto
        (DocumentImpl::recalcStyle): Add check for null paint device.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/khtml_part.cpp
WebCore/khtml/xml/dom_docimpl.cpp

index 620de67..f0428f6 100644 (file)
@@ -1,3 +1,19 @@
+2004-03-01  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       <rdar://problem/3549201>: repro crash in KHTMLPart::begin inside JavaScript code (gmpartsdirect.com)
+
+       Added some null checks. I am not sure why this page attaches a
+       document that has no view, but these changes make it work
+       perfectly.
+        
+       * khtml/khtml_part.cpp:
+        (KHTMLPart::begin): Add check for null view before use.  *
+       khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::close): ditto
+        (DocumentImpl::recalcStyle): Add check for null paint device.
+
 === Safari-130 ===
 
 2004-03-01  Ken Kocienda  <kocienda@apple.com>
index 9682822..cfae2af 100644 (file)
@@ -1532,7 +1532,8 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset )
 
   d->m_doc->open();
   // clear widget
-  d->m_view->resizeContents( 0, 0 );
+  if (d->m_view)
+    d->m_view->resizeContents( 0, 0 );
   connect(d->m_doc,SIGNAL(finishedParsing()),this,SLOT(slotFinishedParsing()));
 
 #if !APPLE_CHANGES
index 29995e7..be79dae 100644 (file)
@@ -1015,7 +1015,7 @@ void DocumentImpl::recalcStyle( StyleChange change )
        fontDef.italic = f.italic();
        fontDef.weight = f.weight();
 #if APPLE_CHANGES
-        bool printing = m_paintDevice->devType() == QInternal::Printer;
+        bool printing = m_paintDevice && (m_paintDevice->devType() == QInternal::Printer);
         fontDef.usePrinterFont = printing;
 #endif
         if (m_view) {
@@ -1317,7 +1317,7 @@ void DocumentImpl::close()
         updateRendering();
         
         // Always do a layout after loading if needed.
-        if (renderer() && (!renderer()->firstChild() || renderer()->needsLayout()))
+        if (view() && renderer() && (!renderer()->firstChild() || renderer()->needsLayout()))
             view()->layout();
     }
 }