summaryrefslogtreecommitdiff
path: root/core/fxcrt/cfx_retain_ptr.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/cfx_retain_ptr.h')
-rw-r--r--core/fxcrt/cfx_retain_ptr.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/core/fxcrt/cfx_retain_ptr.h b/core/fxcrt/cfx_retain_ptr.h
index 0267ae04cd..5db384f334 100644
--- a/core/fxcrt/cfx_retain_ptr.h
+++ b/core/fxcrt/cfx_retain_ptr.h
@@ -44,7 +44,7 @@ class CFX_RetainPtr {
T* Get() const { return m_pObj.get(); }
void Swap(CFX_RetainPtr& that) { m_pObj.swap(that.m_pObj); }
- // TODO(tsepez): temporary scaffolding, to be removed.
+ // Useful for passing notion of object ownership across a C API.
T* Leak() { return m_pObj.release(); }
void Unleak(T* ptr) { m_pObj.reset(ptr); }
@@ -54,6 +54,11 @@ class CFX_RetainPtr {
return *this;
}
+ CFX_RetainPtr& operator=(CFX_RetainPtr&& that) {
+ m_pObj.reset(that.Leak());
+ return *this;
+ }
+
bool operator==(const CFX_RetainPtr& that) const {
return Get() == that.Get();
}