Merge "SharedBuffer: Fix bug in return value of release()"
am: c064db48f1
Change-Id: I401318575ced17a94d19b47b2821ed4c310d9a03
This commit is contained in:
commit
f068856284
1 changed files with 3 additions and 2 deletions
|
@ -112,8 +112,9 @@ 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)
|
||||
&& (atomic_thread_fence(std::memory_order_acquire), true))) {
|
||||
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) {
|
||||
free(const_cast<SharedBuffer*>(this));
|
||||
|
|
Loading…
Reference in a new issue