diff options
Diffstat (limited to 'record/SkRecords.h')
-rw-r--r-- | record/SkRecords.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/record/SkRecords.h b/record/SkRecords.h index 8b96e8d9..bfa15496 100644 --- a/record/SkRecords.h +++ b/record/SkRecords.h @@ -133,7 +133,12 @@ template <typename T> class Adopted : SkNoncopyable { public: Adopted(T* ptr) : fPtr(ptr) { SkASSERT(fPtr); } - ~Adopted() { fPtr->~T(); } + Adopted(Adopted* source) { + // Transfer ownership from source to this. + fPtr = source->fPtr; + source->fPtr = NULL; + } + ~Adopted() { if (fPtr) fPtr->~T(); } ACT_AS_PTR(fPtr); private: @@ -142,9 +147,10 @@ private: // PODArray doesn't own the pointer's memory, and we assume the data is POD. template <typename T> -class PODArray : SkNoncopyable { +class PODArray { public: PODArray(T* ptr) : fPtr(ptr) {} + // Default copy and assign. ACT_AS_PTR(fPtr); private: |