AK: Fix some WeakPtr copy constructor variants not copying the link

This commit is contained in:
Tom 2020-12-29 18:11:12 -07:00 committed by Andreas Kling
parent 54eeb8ee9a
commit 34b3d92a13
Notes: sideshowbarker 2024-07-19 00:19:56 +09:00
2 changed files with 4 additions and 3 deletions

View file

@ -91,7 +91,7 @@ public:
{
object.do_while_locked([&](U* obj) {
if (obj)
obj->template make_weak_ptr<U>().take_link();
m_link = obj->template make_weak_ptr<U>().take_link();
});
}
@ -100,7 +100,7 @@ public:
{
object.do_while_locked([&](U* obj) {
if (obj)
obj->template make_weak_ptr<U>().take_link();
m_link = obj->template make_weak_ptr<U>().take_link();
});
}

View file

@ -30,6 +30,7 @@
#include "Atomic.h"
#include "RefCounted.h"
#include "RefPtr.h"
#include "StdLibExtras.h"
#ifdef KERNEL
# include <Kernel/Arch/i386/CPU.h>
#endif
@ -52,7 +53,7 @@ class WeakLink : public RefCounted<WeakLink> {
friend class WeakPtr;
public:
template<typename T, typename PtrTraits = RefPtrTraits<T>>
template<typename T, typename PtrTraits = RefPtrTraits<T>, typename EnableIf<IsBaseOf<RefCountedBase, T>::value>::Type* = nullptr>
RefPtr<T, PtrTraits> strong_ref() const
{
RefPtr<T, PtrTraits> ref;