From 4d440220a5ef897184c1fb711dbc339e8041bce8 Mon Sep 17 00:00:00 2001 From: Michael Hackstein Date: Tue, 26 Apr 2016 10:50:30 +0200 Subject: [PATCH] Used a shared builder for a closure instead of creating a new one every time. --- arangod/V8Server/V8Traverser.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/arangod/V8Server/V8Traverser.cpp b/arangod/V8Server/V8Traverser.cpp index 0028358477..fe6e27ab87 100644 --- a/arangod/V8Server/V8Traverser.cpp +++ b/arangod/V8Server/V8Traverser.cpp @@ -592,7 +592,8 @@ std::unique_ptr TRI_RunShortestPathSearch( auto edgeFilterClosure = [&opts](VPackSlice edge) -> bool { return opts.matchesEdge(edge); }; - auto vertexFilterClosure = [&opts](VPackSlice const& vertex) -> bool { + VPackBuilder tmpBuilder; + auto vertexFilterClosure = [&opts, &tmpBuilder](VPackSlice const& vertex) -> bool { std::string v = vertex.copyString(); size_t pos = v.find('/'); @@ -607,12 +608,12 @@ std::unique_ptr TRI_RunShortestPathSearch( std::string col = v.substr(0, pos); std::string key = v.substr(pos + 1); - VPackBuilder tmp; - tmp.openObject(); - tmp.add(Transaction::KeyString, VPackValue(key)); - tmp.close(); + tmpBuilder.clear(); + tmpBuilder.openObject(); + tmpBuilder.add(Transaction::KeyString, VPackValue(key)); + tmpBuilder.close(); OperationOptions opOpts; - OperationResult opRes = opts.trx()->document(col, tmp.slice(), opOpts); + OperationResult opRes = opts.trx()->document(col, tmpBuilder.slice(), opOpts); if (opRes.failed()) { return false; }