Title: [241170] trunk/Source/WebCore
Revision
241170
Author
sihui_...@apple.com
Date
2019-02-07 16:45:34 -0800 (Thu, 07 Feb 2019)

Log Message

REGRESSION(r239887): Crash under IDBConnectionToClient::didDeleteDatabase(WebCore::IDBResultData const&)
https://bugs.webkit.org/show_bug.cgi?id=194402
<rdar://problem/47858241>

Reviewed by Geoffrey Garen.

r239887 removed a reference cycle of IDBConnectionToClient so that IDBConnectionToClient would no longer be
around forever. Therefore, ServerOpenRequest should keep a reference to IDBConnectionToClient to make sure it
is valid during access.

* Modules/indexeddb/server/ServerOpenDBRequest.cpp:
(WebCore::IDBServer::ServerOpenDBRequest::maybeNotifyRequestBlocked):
(WebCore::IDBServer::ServerOpenDBRequest::notifyDidDeleteDatabase):
* Modules/indexeddb/server/ServerOpenDBRequest.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (241169 => 241170)


--- trunk/Source/WebCore/ChangeLog	2019-02-08 00:02:49 UTC (rev 241169)
+++ trunk/Source/WebCore/ChangeLog	2019-02-08 00:45:34 UTC (rev 241170)
@@ -1,3 +1,20 @@
+2019-02-07  Sihui Liu  <sihui_...@apple.com>
+
+        REGRESSION(r239887): Crash under IDBConnectionToClient::didDeleteDatabase(WebCore::IDBResultData const&)
+        https://bugs.webkit.org/show_bug.cgi?id=194402
+        <rdar://problem/47858241>
+
+        Reviewed by Geoffrey Garen.
+
+        r239887 removed a reference cycle of IDBConnectionToClient so that IDBConnectionToClient would no longer be
+        around forever. Therefore, ServerOpenRequest should keep a reference to IDBConnectionToClient to make sure it
+        is valid during access.
+
+        * Modules/indexeddb/server/ServerOpenDBRequest.cpp:
+        (WebCore::IDBServer::ServerOpenDBRequest::maybeNotifyRequestBlocked):
+        (WebCore::IDBServer::ServerOpenDBRequest::notifyDidDeleteDatabase):
+        * Modules/indexeddb/server/ServerOpenDBRequest.h:
+
 2019-02-07  Timothy Hatcher  <timo...@apple.com>
 
         Overflow element scrollbar is light for dark mode content.

Modified: trunk/Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.cpp (241169 => 241170)


--- trunk/Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.cpp	2019-02-08 00:02:49 UTC (rev 241169)
+++ trunk/Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.cpp	2019-02-08 00:45:34 UTC (rev 241170)
@@ -60,7 +60,7 @@
         return;
 
     uint64_t requestedVersion = isOpenRequest() ?  m_requestData.requestedVersion() : 0;
-    m_connection.notifyOpenDBRequestBlocked(m_requestData.requestIdentifier(), currentVersion, requestedVersion);
+    m_connection->notifyOpenDBRequestBlocked(m_requestData.requestIdentifier(), currentVersion, requestedVersion);
 
     m_notifiedBlocked = true;
 }
@@ -69,7 +69,7 @@
 {
     ASSERT(isDeleteRequest());
 
-    m_connection.didDeleteDatabase(IDBResultData::deleteDatabaseSuccess(m_requestData.requestIdentifier(), info));
+    m_connection->didDeleteDatabase(IDBResultData::deleteDatabaseSuccess(m_requestData.requestIdentifier(), info));
 }
 
 void ServerOpenDBRequest::notifiedConnectionsOfVersionChange(HashSet<uint64_t>&& connectionIdentifiers)

Modified: trunk/Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.h (241169 => 241170)


--- trunk/Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.h	2019-02-08 00:02:49 UTC (rev 241169)
+++ trunk/Source/WebCore/Modules/indexeddb/server/ServerOpenDBRequest.h	2019-02-08 00:45:34 UTC (rev 241170)
@@ -63,7 +63,7 @@
 private:
     ServerOpenDBRequest(IDBConnectionToClient&, const IDBRequestData&);
 
-    IDBConnectionToClient& m_connection;
+    Ref<IDBConnectionToClient> m_connection;
     IDBRequestData m_requestData;
 
     bool m_notifiedBlocked { false };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to