diff options
author | thestig <thestig@chromium.org> | 2016-05-19 14:36:00 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-19 14:36:00 -0700 |
commit | 80f25a5a8135933a405349ffc798d13273b3d690 (patch) | |
tree | db15a1e0c751f6fc0a648a991d744bc14e7bfadd /core/fxcrt | |
parent | c7600f99490f83e544e37feb77d3b9e8428b0f68 (diff) | |
download | pdfium-80f25a5a8135933a405349ffc798d13273b3d690.tar.xz |
Fix leak in CPDF_StreamContentParser::AddTextObject().
... by using STL containers in more places.
Remove dead / duplicate code as well.
BUG=603904
Review-Url: https://codereview.chromium.org/1998583002
Diffstat (limited to 'core/fxcrt')
-rw-r--r-- | core/fxcrt/include/fx_basic.h | 39 |
1 files changed, 4 insertions, 35 deletions
diff --git a/core/fxcrt/include/fx_basic.h b/core/fxcrt/include/fx_basic.h index 1835d9e0a6..7fdfbf699d 100644 --- a/core/fxcrt/include/fx_basic.h +++ b/core/fxcrt/include/fx_basic.h @@ -717,53 +717,22 @@ class CFX_CountRef { } } - ~CFX_CountRef() { - if (!m_pObject) { - return; - } - m_pObject->m_RefCount--; - if (m_pObject->m_RefCount <= 0) { - delete m_pObject; - } - } + ~CFX_CountRef() { SetNull(); } ObjClass* New() { - if (m_pObject) { - m_pObject->m_RefCount--; - if (m_pObject->m_RefCount <= 0) { - delete m_pObject; - } - } + SetNull(); m_pObject = new CountedObj; m_pObject->m_RefCount = 1; return m_pObject; } void operator=(const Ref& ref) { - if (ref.m_pObject) { + if (ref.m_pObject) ref.m_pObject->m_RefCount++; - } - if (m_pObject) { - m_pObject->m_RefCount--; - if (m_pObject->m_RefCount <= 0) { - delete m_pObject; - } - } + SetNull(); m_pObject = ref.m_pObject; } - void operator=(void* p) { - ASSERT(p == 0); - if (!m_pObject) { - return; - } - m_pObject->m_RefCount--; - if (m_pObject->m_RefCount <= 0) { - delete m_pObject; - } - m_pObject = NULL; - } - const ObjClass* GetObject() const { return m_pObject; } operator const ObjClass*() const { return m_pObject; } |