Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0152d34d authored by Hans Boehm's avatar Hans Boehm Committed by android-build-merger
Browse files

Merge "Fix race bug in attemptIncStrong"

am: 077135b1

Change-Id: Iaf24710f74e61d3465ea2e0794eda91f0e81d46d
parents b6e1d150 077135b1
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -580,17 +580,16 @@ bool RefBase::weakref_type::attemptIncStrong(const void* id)
            // grab a strong-reference, which is always safe due to the
            // extended life-time.
            curCount = impl->mStrong.fetch_add(1, std::memory_order_relaxed);
        }

            // If the strong reference count has already been incremented by
            // someone else, the implementor of onIncStrongAttempted() is holding
            // an unneeded reference.  So call onLastStrongRef() here to remove it.
            // (No, this is not pretty.)  Note that we MUST NOT do this if we
            // are in fact acquiring the first reference.
        if (curCount > 0 && curCount < INITIAL_STRONG_VALUE) {
            if (curCount != 0 && curCount != INITIAL_STRONG_VALUE) {
                impl->mBase->onLastStrongRef(id);
            }
        }
    }
    
    impl->addStrongRef(id);