Title: [132648] trunk/Source/WebCore
- Revision
- 132648
- Author
- [email protected]
- Date
- 2012-10-26 07:07:49 -0700 (Fri, 26 Oct 2012)
Log Message
Crash in PagePopupController by events after WebPagePopupImpl::closePopup
https://bugs.webkit.org/show_bug.cgi?id=100454
Reviewed by Hajime Morita.
No new tests. The bug is timing-dependent.
* page/DOMWindowPagePopup.cpp:
(WebCore::DOMWindowPagePopup::~DOMWindowPagePopup):
Calls clearPagePopupClient for the associalated PagePopupController object.
* page/PagePopupController.cpp:
(WebCore::PagePopupController::setValueAndClosePopup):
Do nothing if m_popupClient is 0.
(WebCore::PagePopupController::localizeNumberString): Ditto.
(WebCore::PagePopupController::clearPagePopupClient): Added.
* page/PagePopupController.h:
(PagePopupController): Declare clearPagePopupClient.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (132647 => 132648)
--- trunk/Source/WebCore/ChangeLog 2012-10-26 13:43:35 UTC (rev 132647)
+++ trunk/Source/WebCore/ChangeLog 2012-10-26 14:07:49 UTC (rev 132648)
@@ -1,3 +1,23 @@
+2012-10-26 Kent Tamura <[email protected]>
+
+ Crash in PagePopupController by events after WebPagePopupImpl::closePopup
+ https://bugs.webkit.org/show_bug.cgi?id=100454
+
+ Reviewed by Hajime Morita.
+
+ No new tests. The bug is timing-dependent.
+
+ * page/DOMWindowPagePopup.cpp:
+ (WebCore::DOMWindowPagePopup::~DOMWindowPagePopup):
+ Calls clearPagePopupClient for the associalated PagePopupController object.
+ * page/PagePopupController.cpp:
+ (WebCore::PagePopupController::setValueAndClosePopup):
+ Do nothing if m_popupClient is 0.
+ (WebCore::PagePopupController::localizeNumberString): Ditto.
+ (WebCore::PagePopupController::clearPagePopupClient): Added.
+ * page/PagePopupController.h:
+ (PagePopupController): Declare clearPagePopupClient.
+
2012-10-25 Alexander Pavlov <[email protected]>
Web Inspector: Bring device geolocation and orientation emulation from behind the experiment
Modified: trunk/Source/WebCore/page/DOMWindowPagePopup.cpp (132647 => 132648)
--- trunk/Source/WebCore/page/DOMWindowPagePopup.cpp 2012-10-26 13:43:35 UTC (rev 132647)
+++ trunk/Source/WebCore/page/DOMWindowPagePopup.cpp 2012-10-26 14:07:49 UTC (rev 132648)
@@ -45,6 +45,7 @@
DOMWindowPagePopup::~DOMWindowPagePopup()
{
+ m_controller->clearPagePopupClient();
}
const AtomicString& DOMWindowPagePopup::supplementName()
Modified: trunk/Source/WebCore/page/PagePopupController.cpp (132647 => 132648)
--- trunk/Source/WebCore/page/PagePopupController.cpp 2012-10-26 13:43:35 UTC (rev 132647)
+++ trunk/Source/WebCore/page/PagePopupController.cpp 2012-10-26 14:07:49 UTC (rev 132648)
@@ -50,13 +50,21 @@
void PagePopupController::setValueAndClosePopup(int numValue, const String& stringValue)
{
- m_popupClient->setValueAndClosePopup(numValue, stringValue);
+ if (m_popupClient)
+ m_popupClient->setValueAndClosePopup(numValue, stringValue);
}
String PagePopupController::localizeNumberString(const String& numberString)
{
- return m_popupClient->localizer().convertToLocalizedNumber(numberString);
+ if (m_popupClient)
+ return m_popupClient->localizer().convertToLocalizedNumber(numberString);
+ return numberString;
}
+void PagePopupController::clearPagePopupClient()
+{
+ m_popupClient = 0;
}
+
+}
#endif
Modified: trunk/Source/WebCore/page/PagePopupController.h (132647 => 132648)
--- trunk/Source/WebCore/page/PagePopupController.h 2012-10-26 13:43:35 UTC (rev 132647)
+++ trunk/Source/WebCore/page/PagePopupController.h 2012-10-26 14:07:49 UTC (rev 132648)
@@ -45,6 +45,7 @@
static PassRefPtr<PagePopupController> create(PagePopupClient*);
void setValueAndClosePopup(int numValue, const String& stringValue);
String localizeNumberString(const String&);
+ void clearPagePopupClient();
private:
explicit PagePopupController(PagePopupClient*);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes