aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoão Barbosa <joao.paulo.barbosa@gmail.com>2019-12-14 15:35:31 +0000
committerJoão Barbosa <joao.paulo.barbosa@gmail.com>2020-02-13 15:43:35 +0000
commit25bc17fceb08ee9625c5e09e2579117ec6f7a1c5 (patch)
tree132ab3e3a84440b3cf5bc1355fd2017af96622f8 /src
parentddecb671f0a41eaa8e6198f7e55172c1256bd978 (diff)
downloadbitcoin-25bc17fceb08ee9625c5e09e2579117ec6f7a1c5.tar.xz
refactor: rpc: Remove vector copy from listtransactions
No change in behavior.
Diffstat (limited to 'src')
-rw-r--r--src/wallet/rpcwallet.cpp21
1 files changed, 4 insertions, 17 deletions
diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp
index 63cbe02b17..b6eff66f9b 100644
--- a/src/wallet/rpcwallet.cpp
+++ b/src/wallet/rpcwallet.cpp
@@ -1491,23 +1491,10 @@ UniValue listtransactions(const JSONRPCRequest& request)
if ((nFrom + nCount) > (int)ret.size())
nCount = ret.size() - nFrom;
- std::vector<UniValue> arrTmp = ret.getValues();
-
- std::vector<UniValue>::iterator first = arrTmp.begin();
- std::advance(first, nFrom);
- std::vector<UniValue>::iterator last = arrTmp.begin();
- std::advance(last, nFrom+nCount);
-
- if (last != arrTmp.end()) arrTmp.erase(last, arrTmp.end());
- if (first != arrTmp.begin()) arrTmp.erase(arrTmp.begin(), first);
-
- std::reverse(arrTmp.begin(), arrTmp.end()); // Return oldest to newest
-
- ret.clear();
- ret.setArray();
- ret.push_backV(arrTmp);
-
- return ret;
+ const std::vector<UniValue>& txs = ret.getValues();
+ UniValue result{UniValue::VARR};
+ result.push_backV({ txs.rend() - nFrom - nCount, txs.rend() - nFrom }); // Return oldest to newest
+ return result;
}
static UniValue listsinceblock(const JSONRPCRequest& request)