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

Reply via email to