summaryrefslogtreecommitdiff
path: root/record/SkRecords.h
diff options
context:
space:
mode:
Diffstat (limited to 'record/SkRecords.h')
-rw-r--r--record/SkRecords.h10
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: