Title: [203597] trunk
Revision
203597
Author
[email protected]
Date
2016-07-22 05:40:26 -0700 (Fri, 22 Jul 2016)

Log Message

IWebView::mainFrame crashes if called after IWebView::close
https://bugs.webkit.org/show_bug.cgi?id=32868

Reviewed by Brent Fulgham.

Source/WebKit/win:

After deleting the page in WebView::close the mainframe object may be deleted. 
         
Test: Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp (CloseThenGetMainFrame).

* WebView.cpp:
(WebView::close): set mainframe pointer member to null. 

Tools:

* TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp:
(TestWebKitAPI::TEST_F): Added test.

Modified Paths

Diff

Modified: trunk/Source/WebKit/win/ChangeLog (203596 => 203597)


--- trunk/Source/WebKit/win/ChangeLog	2016-07-22 10:24:03 UTC (rev 203596)
+++ trunk/Source/WebKit/win/ChangeLog	2016-07-22 12:40:26 UTC (rev 203597)
@@ -1,3 +1,17 @@
+2016-07-22  Per Arne Vollan  <[email protected]>
+
+        IWebView::mainFrame crashes if called after IWebView::close
+        https://bugs.webkit.org/show_bug.cgi?id=32868
+
+        Reviewed by Brent Fulgham.
+
+        After deleting the page in WebView::close the mainframe object may be deleted. 
+         
+        Test: Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp (CloseThenGetMainFrame).
+
+        * WebView.cpp:
+        (WebView::close): set mainframe pointer member to null. 
+
 2016-07-19  Per Arne Vollan  <[email protected]>
 
         [Win] The test fast/scrolling/overflow-scroll-past-max.html is timing out.

Modified: trunk/Source/WebKit/win/WebView.cpp (203596 => 203597)


--- trunk/Source/WebKit/win/WebView.cpp	2016-07-22 10:24:03 UTC (rev 203596)
+++ trunk/Source/WebKit/win/WebView.cpp	2016-07-22 12:40:26 UTC (rev 203597)
@@ -769,8 +769,10 @@
         m_webInspector->inspectedWebViewClosed();
 
     delete m_page;
-    m_page = 0;
+    m_page = nullptr;
 
+    m_mainFrame = nullptr;
+
     registerForIconNotification(false);
     IWebNotificationCenter* notifyCenter = WebNotificationCenter::defaultCenterInternal();
     notifyCenter->removeObserver(this, WebPreferences::webPreferencesChangedNotification(), static_cast<IWebPreferences*>(m_preferences.get()));

Modified: trunk/Tools/ChangeLog (203596 => 203597)


--- trunk/Tools/ChangeLog	2016-07-22 10:24:03 UTC (rev 203596)
+++ trunk/Tools/ChangeLog	2016-07-22 12:40:26 UTC (rev 203597)
@@ -1,3 +1,13 @@
+2016-07-22  Per Arne Vollan  <[email protected]>
+
+        IWebView::mainFrame crashes if called after IWebView::close
+        https://bugs.webkit.org/show_bug.cgi?id=32868
+
+        Reviewed by Brent Fulgham.
+
+        * TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp:
+        (TestWebKitAPI::TEST_F): Added test.
+
 2016-07-22  Carlos Garcia Campos  <[email protected]>
 
         [GTK] Enable threaded compositor by default

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp (203596 => 203597)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp	2016-07-22 10:24:03 UTC (rev 203596)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp	2016-07-22 12:40:26 UTC (rev 203597)
@@ -154,6 +154,15 @@
     EXPECT_HRESULT_SUCCEEDED(m_webView->close());
 }
 
+// Tests that calling IWebView::close followed by IWebView::mainFrame does not crash.
+TEST_F(WebViewDestructionWithHostWindow, CloseThenGetMainFrame)
+{
+    EXPECT_HRESULT_SUCCEEDED(m_webView->close());
+
+    COMPtr<IWebFrame> frame;
+    EXPECT_HRESULT_FAILED(m_webView->mainFrame(&frame));
+}
+
 TEST_F(WebViewDestructionWithHostWindow, DestroyViewWindowWithoutClose)
 {
     ::DestroyWindow(m_viewWindow);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to