⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 282491 in webkit


Ignore:
Timestamp:
Sep 16, 2021, 12:34:18 AM (5 years ago)
Author:
Carlos Garcia Campos
Message:

Merge r281384 - IndexedDB: crash when triggering IDBOpenRequest completion back on a worker thread
​https://bugs.webkit.org/show_bug.cgi?id=229375

Source/WebCore:

Reviewed by Brady Eidson.

Client may dispatch custom events to an IDBRequest, and we should only change request state based on events
created internally.

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::dispatchEvent):

Source/WTF:

Protect callee in CrossThreadTask if it inherits from ThreadSafeRefCounted<T>.

Reviewed by Brady Eidson.

  • wtf/CrossThreadTask.h:
Location:
releases/WebKitGTK/webkit-2.32/Source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • releases/WebKitGTK/webkit-2.32/Source/WTF/ChangeLog

    r280225 r282491  
     12021-08-21  Sihui Liu  <sihui_liu@apple.com>
     2
     3        IndexedDB: crash when triggering IDBOpenRequest completion back on a worker thread
     4        https://bugs.webkit.org/show_bug.cgi?id=229375
     5
     6        Protect callee in CrossThreadTask if it inherits from ThreadSafeRefCounted<T>.
     7
     8        Reviewed by Brady Eidson.
     9
     10        * wtf/CrossThreadTask.h:
     11
    1122021-04-12  Youenn Fablet  <youenn@apple.com>
    213
  • releases/WebKitGTK/webkit-2.32/Source/WTF/wtf/CrossThreadTask.h

    r248546 r282491  
    8686}
    8787
    88 template<typename T, typename std::enable_if<std::is_base_of<ThreadSafeRefCounted<T>, T>::value, int>::type = 0, typename... Parameters, typename... Arguments>
     88template<typename T, typename std::enable_if<std::is_base_of<ThreadSafeRefCountedBase, T>::value, int>::type = 0, typename... Parameters, typename... Arguments>
    8989CrossThreadTask createCrossThreadTask(T& callee, void (T::*method)(Parameters...), const Arguments&... arguments)
    9090{
    … …  
    9494}
    9595
    96 template<typename T, typename std::enable_if<!std::is_base_of<ThreadSafeRefCounted<T>, T>::value, int>::type = 0, typename... Parameters, typename... Arguments>
     96template<typename T, typename std::enable_if<!std::is_base_of<ThreadSafeRefCountedBase, T>::value, int>::type = 0, typename... Parameters, typename... Arguments>
    9797CrossThreadTask createCrossThreadTask(T& callee, void (T::*method)(Parameters...), const Arguments&... arguments)
    9898{
  • releases/WebKitGTK/webkit-2.32/Source/WebCore/ChangeLog

    r282489 r282491  
     12021-08-21  Sihui Liu  <sihui_liu@apple.com>
     2
     3        IndexedDB: crash when triggering IDBOpenRequest completion back on a worker thread
     4        https://bugs.webkit.org/show_bug.cgi?id=229375
     5
     6        Reviewed by Brady Eidson.
     7
     8        Client may dispatch custom events to an IDBRequest, and we should only change request state based on events
     9        created internally.
     10
     11        * Modules/indexeddb/IDBRequest.cpp:
     12        (WebCore::IDBRequest::dispatchEvent):
     13
    1142021-03-30  Ryosuke Niwa  <rniwa@webkit.org>
    215
  • releases/WebKitGTK/webkit-2.32/Source/WebCore/Modules/indexeddb/IDBRequest.cpp

    r259419 r282491  
    312312        targets = { this, m_transaction.get(), &m_transaction->database() };
    313313
    314     m_hasPendingActivity = false;
     314    if (event.isTrusted())
     315        m_hasPendingActivity = false;
    315316
    316317    {
Note: See TracChangeset for help on using the changeset viewer.