Check sp<>::clear() for data races
sp<>::clear() presents the same risks of heap corruption in the presence of data races as does assignment. Add the same data race check. Bug: 112651574 Test: Build and boot AOSP Change-Id: I75d4eedd756d521920e61ff9187509f9145d4235
This commit is contained in:
parent
6a581b7b66
commit
f4f76205fe
|
@ -228,8 +228,10 @@ void sp<T>::force_set(T* other) {
|
|||
|
||||
template<typename T>
|
||||
void sp<T>::clear() {
|
||||
if (m_ptr) {
|
||||
m_ptr->decStrong(this);
|
||||
T* oldPtr(*const_cast<T* volatile*>(&m_ptr));
|
||||
if (oldPtr) {
|
||||
oldPtr->decStrong(this);
|
||||
if (oldPtr != *const_cast<T* volatile*>(&m_ptr)) sp_report_race();
|
||||
m_ptr = nullptr;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue