Changeset 52829 in webkit
- Timestamp:
- Jan 5, 2010 3:07:21 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/win/ChangeLog
r52828 r52829 1 2010-01-05 Adam Roben <aroben@apple.com> 2 3 Make it safe to call IWebView::close when IWebView::initWithFrame 4 hasn't been called 5 6 Part of <http://webkit.org/b/32827> Crash when calling 7 IWebView::close, then releasing the WebView, without calling 8 DestroyWindow 9 10 Reviewed by Steve Falkenburg. 11 12 * WebView.cpp: 13 (WebView::close): Null-check m_page and m_preferences before using 14 them. They will be null if initWithFrame was never called. 15 1 16 2010-01-05 Adam Roben <aroben@apple.com> 2 17 -
trunk/WebKit/win/WebView.cpp
r52828 r52829 636 636 removeFromAllWebViewsSet(); 637 637 638 Frame* frame = m_page->mainFrame(); 639 if (frame) 640 frame->loader()->detachFromParent(); 638 if (m_page) { 639 if (Frame* frame = m_page->mainFrame()) 640 frame->loader()->detachFromParent(); 641 } 641 642 642 643 if (m_mouseOutTracker) { … … 669 670 notifyCenter->removeObserver(this, WebPreferences::webPreferencesChangedNotification(), static_cast<IWebPreferences*>(m_preferences.get())); 670 671 671 BSTR identifier = 0; 672 m_preferences->identifier(&identifier); 673 674 COMPtr<WebPreferences> preferences = m_preferences; 675 m_preferences = 0; 676 preferences->didRemoveFromWebView(); 677 // Make sure we release the reference, since WebPreferences::removeReferenceForIdentifier will check for last reference to WebPreferences 678 preferences = 0; 679 if (identifier) { 680 WebPreferences::removeReferenceForIdentifier(identifier); 681 SysFreeString(identifier); 672 if (COMPtr<WebPreferences> preferences = m_preferences) { 673 BSTR identifier = 0; 674 preferences->identifier(&identifier); 675 676 m_preferences = 0; 677 preferences->didRemoveFromWebView(); 678 // Make sure we release the reference, since WebPreferences::removeReferenceForIdentifier will check for last reference to WebPreferences 679 preferences = 0; 680 if (identifier) { 681 WebPreferences::removeReferenceForIdentifier(identifier); 682 SysFreeString(identifier); 683 } 682 684 } 683 685 -
trunk/WebKitTools/ChangeLog
r52826 r52829 1 2010-01-05 Adam Roben <aroben@apple.com> 2 3 Test that it's safe to call IWebView::close when 4 IWebView::initWithFrame hasn't been called 5 6 Part of <http://webkit.org/b/32827> Crash when calling 7 IWebView::close, then releasing the WebView, without calling 8 DestroyWindow 9 10 Reviewed by Steve Falkenburg. 11 12 * WebKitAPITest/tests/WebViewDestruction.cpp: 13 (WebKitAPITest::CloseWithoutInitWithFrame): Calls IWebView::close 14 without ever calling IWebView::initWithFrame and tests that we don't 15 crash or leak. 16 1 17 2010-01-05 Adam Roben <aroben@apple.com> 2 18 -
trunk/WebKitTools/WebKitAPITest/tests/WebViewDestruction.cpp
r52826 r52829 103 103 } 104 104 105 TEST(WebViewDestruction, CloseWithoutInitWithFrame) 106 { 107 COMPtr<IWebView> webView; 108 TEST_ASSERT(SUCCEEDED(WebKitCreateInstance(__uuidof(WebView), &webView))); 109 110 TEST_ASSERT(SUCCEEDED(webView->close())); 111 112 finishWebViewDestructionTest(webView, 0); 113 } 114 105 115 // Tests that releasing a WebView without calling IWebView::close or DestroyWindow doesn't leak. <http://webkit.org/b/33162> 106 116 TEST(WebViewDestruction, NoCloseOrDestroyViewWindow)
Note: See TracChangeset
for help on using the changeset viewer.