| Index: include/core/SkRefCnt.h
|
| diff --git a/include/core/SkRefCnt.h b/include/core/SkRefCnt.h
|
| index 1e31d918cc973727fcdf6b99b5d27a823bba478c..d85c20ecaf0638c233f38810ceb5581001208b77 100644
|
| --- a/include/core/SkRefCnt.h
|
| +++ b/include/core/SkRefCnt.h
|
| @@ -261,10 +261,23 @@ public:
|
|
|
| bool unique() const { return 1 == sk_acquire_load(&fRefCnt); }
|
| void ref() const { sk_atomic_inc(&fRefCnt); }
|
| - void unref() const { if (1 == sk_atomic_dec(&fRefCnt)) { SkDELETE((const Derived*)this); } }
|
| + void unref() const {
|
| + int32_t prevValue = sk_atomic_dec(&fRefCnt);
|
| + SkASSERT(prevValue >= 1);
|
| + if (1 == prevValue) {
|
| + SkDELETE((const Derived*)this);
|
| + }
|
| + }
|
| void deref() const { this->unref(); } // Chrome prefers to call deref().
|
| int32_t getRefCnt() const { return fRefCnt; } // Used by Chrome unit tests.
|
|
|
| +protected:
|
| +#ifdef SK_DEBUG
|
| + ~SkNVRefCnt() {
|
| + SkASSERTF(0 == fRefCnt, "NVRefCnt was %d", fRefCnt);
|
| + }
|
| +#endif
|
| +
|
| private:
|
| mutable int32_t fRefCnt;
|
| };
|
|
|