Avoid boost dynamic_bitset in rest_getutxos
This commit is contained in:
parent
99f001eb52
commit
82e8baab3c
1 changed files with 7 additions and 5 deletions
12
src/rest.cpp
12
src/rest.cpp
|
@ -17,7 +17,6 @@
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/dynamic_bitset.hpp>
|
|
||||||
|
|
||||||
#include <univalue.h>
|
#include <univalue.h>
|
||||||
|
|
||||||
|
@ -502,7 +501,8 @@ static bool rest_getutxos(HTTPRequest* req, const std::string& strURIPart)
|
||||||
vector<unsigned char> bitmap;
|
vector<unsigned char> bitmap;
|
||||||
vector<CCoin> outs;
|
vector<CCoin> outs;
|
||||||
std::string bitmapStringRepresentation;
|
std::string bitmapStringRepresentation;
|
||||||
boost::dynamic_bitset<unsigned char> hits(vOutPoints.size());
|
std::vector<bool> hits;
|
||||||
|
bitmap.resize((vOutPoints.size() + 7) / 8);
|
||||||
{
|
{
|
||||||
LOCK2(cs_main, mempool.cs);
|
LOCK2(cs_main, mempool.cs);
|
||||||
|
|
||||||
|
@ -518,10 +518,11 @@ static bool rest_getutxos(HTTPRequest* req, const std::string& strURIPart)
|
||||||
for (size_t i = 0; i < vOutPoints.size(); i++) {
|
for (size_t i = 0; i < vOutPoints.size(); i++) {
|
||||||
CCoins coins;
|
CCoins coins;
|
||||||
uint256 hash = vOutPoints[i].hash;
|
uint256 hash = vOutPoints[i].hash;
|
||||||
|
bool hit = false;
|
||||||
if (view.GetCoins(hash, coins)) {
|
if (view.GetCoins(hash, coins)) {
|
||||||
mempool.pruneSpent(hash, coins);
|
mempool.pruneSpent(hash, coins);
|
||||||
if (coins.IsAvailable(vOutPoints[i].n)) {
|
if (coins.IsAvailable(vOutPoints[i].n)) {
|
||||||
hits[i] = true;
|
hit = true;
|
||||||
// Safe to index into vout here because IsAvailable checked if it's off the end of the array, or if
|
// Safe to index into vout here because IsAvailable checked if it's off the end of the array, or if
|
||||||
// n is valid but points to an already spent output (IsNull).
|
// n is valid but points to an already spent output (IsNull).
|
||||||
CCoin coin;
|
CCoin coin;
|
||||||
|
@ -533,10 +534,11 @@ static bool rest_getutxos(HTTPRequest* req, const std::string& strURIPart)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bitmapStringRepresentation.append(hits[i] ? "1" : "0"); // form a binary string representation (human-readable for json output)
|
hits.push_back(hit);
|
||||||
|
bitmapStringRepresentation.append(hit ? "1" : "0"); // form a binary string representation (human-readable for json output)
|
||||||
|
bitmap[i / 8] |= ((uint8_t)hit) << (i % 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boost::to_block_range(hits, std::back_inserter(bitmap));
|
|
||||||
|
|
||||||
switch (rf) {
|
switch (rf) {
|
||||||
case RF_BINARY: {
|
case RF_BINARY: {
|
||||||
|
|
Loading…
Reference in a new issue