diff --git a/base/include/refbase.h b/base/include/refbase.h index 8122d81806de6805dd1dd9b5003e2c39630381e6..e7df34a6f7fc22b08b1332680903419a28c684a3 100644 --- a/base/include/refbase.h +++ b/base/include/refbase.h @@ -188,6 +188,8 @@ public: WeakRefCounter *CreateWeakRef(void *cookie); + RefCounter *GetRefCounter() const; + void IncWeakRef(const void *objectId); void DecWeakRef(const void *objectId); diff --git a/base/src/refbase.cpp b/base/src/refbase.cpp index fb46127f919b6024c883061de5f70fdac833f2b7..ad5665e161b7b81223682f835541e0e188541ea1 100644 --- a/base/src/refbase.cpp +++ b/base/src/refbase.cpp @@ -361,7 +361,7 @@ bool RefCounter::AttemptIncStrong(const void *objectId) if (atomicStrong_.compare_exchange_weak(curCount, curCount + 1, std::memory_order_relaxed)) { break; } - curCount = atomicStrong_.load(std::memory_order_relaxed); + // curCount has been updated. } if (curCount <= 0) { DecWeakRefCount(objectId); @@ -511,6 +511,11 @@ void RefBase::IncWeakRef(const void *objectId) } } +RefCounter *RefBase::GetRefCounter() const +{ + return refs_; +} + void RefBase::DecWeakRef(const void *objectId) { if (refs_ != nullptr) {