From 9802d350aa77767caffa06af09cd25db796af300 Mon Sep 17 00:00:00 2001 From: blackjok3r Date: Sat, 4 May 2019 01:55:33 +0800 Subject: [PATCH] bug fix --- src/rpc/misc.cpp | 2 +- src/txdb.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 7cb9b6664..4ea6e94e3 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -1383,7 +1383,7 @@ UniValue getsnapshot(const UniValue& params, bool fHelp) if (params.size() > 0 && !params[0].isNull()) { top = atoi(params[0].get_str().c_str()); - if (top <= 0) + if (top < 0) //throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, top must be a positive integer"); top = -1; } diff --git a/src/txdb.cpp b/src/txdb.cpp index 4638633ed..82885044e 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -481,6 +481,8 @@ bool CBlockTreeDB::Snapshot2(std::map &addressAmounts, Un try { CAmount nValue; iter->GetValue(nValue); + if ( nValue == 0 ) + continue; getAddressFromIndex(indexKey.type, indexKey.hashBytes, address); if ( indexKey.type == 3 ) { @@ -566,9 +568,9 @@ UniValue CBlockTreeDB::Snapshot(int top) UniValue result(UniValue::VOBJ); UniValue addressesSorted(UniValue::VARR); result.push_back(Pair("start_time", (int) time(NULL))); - if ( (vAddressSnapshot.size() > 0 && top < 0) || (Snapshot2(addressAmounts,&result) && top > 0) ) + if ( (vAddressSnapshot.size() > 0 && top < 0) || (Snapshot2(addressAmounts,&result) && top >= 0) ) { - if ( top > 0 ) + if ( top > -1 ) { for (std::pair element : addressAmounts) vaddr.push_back( make_pair(element.second, element.first) );