Loading libutils/SharedBuffer.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -112,7 +112,8 @@ void SharedBuffer::acquire() const { int32_t SharedBuffer::release(uint32_t flags) const { int32_t prev = 1; if (onlyOwner() || ((prev = mRefs.fetch_sub(1, std::memory_order_release) == 1) if (onlyOwner() || (((prev = mRefs.fetch_sub(1, std::memory_order_release)) == 1) && (atomic_thread_fence(std::memory_order_acquire), true))) { mRefs.store(0, std::memory_order_relaxed); if ((flags & eKeepStorage) == 0) { Loading Loading
libutils/SharedBuffer.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -112,7 +112,8 @@ void SharedBuffer::acquire() const { int32_t SharedBuffer::release(uint32_t flags) const { int32_t prev = 1; if (onlyOwner() || ((prev = mRefs.fetch_sub(1, std::memory_order_release) == 1) if (onlyOwner() || (((prev = mRefs.fetch_sub(1, std::memory_order_release)) == 1) && (atomic_thread_fence(std::memory_order_acquire), true))) { mRefs.store(0, std::memory_order_relaxed); if ((flags & eKeepStorage) == 0) { Loading