Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3985cfe856ce74f978ce7d1a85408d3a5864a9bf
      
https://github.com/WebKit/WebKit/commit/3985cfe856ce74f978ce7d1a85408d3a5864a9bf
  Author: Yusuke Suzuki <ysuz...@apple.com>
  Date:   2025-01-15 (Wed, 15 Jan 2025)

  Changed paths:
    A JSTests/wasm/stress/thread-safe-weak-or-strong-ptr-validate.js
    M Source/WTF/wtf/ThreadSafeWeakPtr.h

  Log Message:
  -----------
  [WTF] ThreadSafeWeakOrStrongPtr should appropriately reset payload
https://bugs.webkit.org/show_bug.cgi?id=286042
rdar://142973371

Reviewed by Keith Miller.

The code like this is not correct.

    if (isWeak())
        m_weak = nullptr;
    m_strong = ...

The reason is that m_weak does not change the enum. As a result,
m_strong contains Weak enum in the pointer, causing the crash due to
destroying invalid pointer. This patch refactors ThreadSafeWeakOrStrongPtr
so that we can clearly track the underlying payload state.

* JSTests/wasm/stress/thread-safe-weak-or-strong-ptr-validate.js: Added.
(instantiate):
(const.log):
(async let.fn0):
(let.fn1):
(let.fn2):
(let.fn3):
(let.fn4):
(let.fn5):
(async let):
* Source/WTF/wtf/ThreadSafeWeakPtr.h:
(WTF::ThreadSafeWeakOrStrongPtr::operator=):
(WTF::ThreadSafeWeakOrStrongPtr::ThreadSafeWeakOrStrongPtr):
(WTF::ThreadSafeWeakOrStrongPtr::swap):
(WTF::ThreadSafeWeakOrStrongPtr::copyConstructFrom):
(WTF::ThreadSafeWeakOrStrongPtr::moveConstructFrom):

Canonical link: https://commits.webkit.org/288991@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to