From 8973f65a50917fffdbf18ff5c896c65c3ac4da5c Mon Sep 17 00:00:00 2001 From: Horst Schirmeier Date: Sat, 7 Feb 2015 15:58:23 +0100 Subject: [PATCH] util: don't leak resources from SumTree This fixes the resource-leaking "should never happen" case when no element is found by returning a notfound member. Found by Coverity Scan, CID 25555. Change-Id: I9055ae0a3b31e61f3a8e3b098ec5613c3b5535f6 --- src/core/util/SumTree.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/util/SumTree.hpp b/src/core/util/SumTree.hpp index d5df54da..2a507585 100644 --- a/src/core/util/SumTree.hpp +++ b/src/core/util/SumTree.hpp @@ -108,6 +108,7 @@ private: //! Tree depth: nodes at level m_depth are leaf nodes, others are inner nodes unsigned m_depth; public: + T notfound; //! Returned if no element was found. SumTree() : m_root(new Bucket), m_depth(0) {} ~SumTree() { delete m_root; } //! Adds a copy of a new element to the tree. The copy is created internally. @@ -244,7 +245,7 @@ T SumTree::remove(typename T::size_type pos, Bucket *node, typena // this should never happen assert(0); - return T(); + return notfound; } template @@ -282,7 +283,7 @@ T& SumTree::get(typename T::size_type pos, Bucket *node, typename // this should never happen assert(0); - return *(new T); + return notfound; } } // namespace