[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
jcivelli at chromium.org
jcivelli at chromium.org
Wed Dec 22 15:32:34 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 89f0ba2b36340aed90fe7ce60aab63b6d1c1d548
Author: jcivelli at chromium.org <jcivelli at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Sun Nov 7 09:42:10 2010 +0000
2010-11-07 Jay Civelli <jcivelli at chromium.org>
Reviewed by Kent Tamura.
Fixing a crasher with the select popup on Mac that happens when a
page removes the select node when the select changes.
https://bugs.webkit.org/show_bug.cgi?id=49108
* src/ExternalPopupMenu.cpp:
(WebKit::ExternalPopupMenu::didAcceptIndex):
(WebKit::ExternalPopupMenu::didCancel):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71480 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index db5e9db..ff4ad3d 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,15 @@
+2010-11-07 Jay Civelli <jcivelli at chromium.org>
+
+ Reviewed by Kent Tamura.
+
+ Fixing a crasher with the select popup on Mac that happens when a
+ page removes the select node when the select changes.
+ https://bugs.webkit.org/show_bug.cgi?id=49108
+
+ * src/ExternalPopupMenu.cpp:
+ (WebKit::ExternalPopupMenu::didAcceptIndex):
+ (WebKit::ExternalPopupMenu::didCancel):
+
2010-11-06 Pavel Feldman <pfeldman at chromium.org>
Not reviewed. Chromium DevTools: disable filesystem inspection
diff --git a/WebKit/chromium/src/ExternalPopupMenu.cpp b/WebKit/chromium/src/ExternalPopupMenu.cpp
index a0243eb..0f208fb 100644
--- a/WebKit/chromium/src/ExternalPopupMenu.cpp
+++ b/WebKit/chromium/src/ExternalPopupMenu.cpp
@@ -98,15 +98,26 @@ void ExternalPopupMenu::didChangeSelection(int index)
void ExternalPopupMenu::didAcceptIndex(int index)
{
+ // Calling methods on the PopupMenuClient might lead to this object being
+ // derefed. This ensures it does not get deleted while we are running this
+ // method.
+ RefPtr<ExternalPopupMenu> guard(this);
+
if (m_popupMenuClient) {
m_popupMenuClient->valueChanged(index);
- m_popupMenuClient->popupDidHide();
+ // The call to valueChanged above might have lead to a call to
+ // disconnectClient, so we might not have a PopupMenuClient anymore.
+ if (m_popupMenuClient)
+ m_popupMenuClient->popupDidHide();
}
m_webExternalPopupMenu = 0;
}
void ExternalPopupMenu::didCancel()
{
+ // See comment in didAcceptIndex on why we need this.
+ RefPtr<ExternalPopupMenu> guard(this);
+
if (m_popupMenuClient)
m_popupMenuClient->popupDidHide();
m_webExternalPopupMenu = 0;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list