From 13fe8c9d74607610b3a535c7edf911eaa8711318 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Tue, 22 Sep 2015 21:53:22 -0700 Subject: Merge to XFA: Change nonstd::unique_ptr to take a custom deleter. Code is mostly stolen from Chromium's scoped_ptr. - Add unit tests. - Use this to fix a leak. BUG=chromium:531408 TBR=tsepez@chromium.org Review URL: https://codereview.chromium.org/1351383004 . (cherry picked from commit cef2a9c51bee4b987fc813013d45dad6535a9a46) Review URL: https://codereview.chromium.org/1358163003 . --- core/include/fxcrt/fx_basic.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'core/include/fxcrt/fx_basic.h') diff --git a/core/include/fxcrt/fx_basic.h b/core/include/fxcrt/fx_basic.h index 661722e1b2..fa536004d4 100644 --- a/core/include/fxcrt/fx_basic.h +++ b/core/include/fxcrt/fx_basic.h @@ -1085,6 +1085,13 @@ class CFX_AutoRestorer { T m_OldValue; }; +// Used with nonstd::unique_ptr to Release() objects that can't be deleted. +template +struct ReleaseDeleter { + inline void operator()(T* ptr) const { ptr->Release(); } +}; + +// TODO(thestig) Remove in favor of nonstd::unique_ptr. template class CFX_SmartPointer { public: @@ -1097,6 +1104,7 @@ class CFX_SmartPointer { protected: T* m_pObj; }; + #define FX_DATALIST_LENGTH 1024 template class CFX_SortListArray { -- cgit v1.2.3