Merge "SharedBuffer: Fix bug in return value of release()"

This commit is contained in:
Greg Kaiser 2016-08-08 18:11:26 +00:00 committed by Gerrit Code Review
commit c064db48f1
1 changed files with 3 additions and 2 deletions

View File

@ -114,8 +114,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));