From acf2dcf7b503ab8f7fba54520b25d7f8a729a858 Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Wed, 16 Dec 2015 10:08:21 +0100 Subject: [PATCH] fixed leak --- arangod/Cluster/ClusterTraverser.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arangod/Cluster/ClusterTraverser.cpp b/arangod/Cluster/ClusterTraverser.cpp index 4b88fbfe60..3211e7bd26 100644 --- a/arangod/Cluster/ClusterTraverser.cpp +++ b/arangod/Cluster/ClusterTraverser.cpp @@ -181,7 +181,14 @@ void ClusterTraverser::EdgeGetter::operator() (std::string const& startVertex, if (_traverser->_vertices.find(toId) == _traverser->_vertices.end()) { verticesToFetch.emplace(toId); } - _traverser->_edges.emplace(edgeId, edge.copy().steal()); + std::unique_ptr copy(edge.copy().steal()); + if (copy != nullptr) { + if (_traverser->_edges.emplace(edgeId, copy.get()).second) { + // if insertion was successful, hand over the ownership + copy.release(); + } + // else we have a duplicate and we need to free the copy again + } } std::vector expVertices;