Index: include/core/SkRefCnt.h |
diff --git a/include/core/SkRefCnt.h b/include/core/SkRefCnt.h |
index 93608783d688bd21b6f63eef49e4eb1482878eb0..c718987b517ab4726943f235a9531568489f3ebf 100644 |
--- a/include/core/SkRefCnt.h |
+++ b/include/core/SkRefCnt.h |
@@ -255,6 +255,7 @@ template <typename Derived> |
class SkNVRefCnt : SkNoncopyable { |
public: |
SkNVRefCnt() : fRefCnt(1) {} |
+ ~SkNVRefCnt() { SkASSERTF(1 == fRefCnt, "NVRefCnt was %d", fRefCnt); } |
// Implementation is pretty much the same as SkRefCntBase. All required barriers are the same: |
// - unique() needs acquire when it returns true, and no barrier if it returns false; |
@@ -267,18 +268,12 @@ public: |
int32_t prevValue = sk_atomic_dec(&fRefCnt); |
SkASSERT(prevValue >= 1); |
if (1 == prevValue) { |
+ SkDEBUGCODE(fRefCnt = 1;) // restore the 1 for our destructor's assert |
SkDELETE((const Derived*)this); |
} |
} |
void deref() const { this->unref(); } // Chrome prefers to call deref(). |
-protected: |
-#ifdef SK_DEBUG |
- ~SkNVRefCnt() { |
- SkASSERTF(0 == fRefCnt, "NVRefCnt was %d", fRefCnt); |
- } |
-#endif |
- |
private: |
mutable int32_t fRefCnt; |
}; |