0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-15 11:36:00 -05:00

Merge bitcoin/bitcoin#30094: rpc: move UniValue in blockToJSON

b77bad309e rpc: move UniValue in blockToJSON (willcl-ark)

Pull request description:

  Fixes: #24542
  Fixes: #30052

  Without explicitly declaring the move, these `UniValues` get copied, causing increased memory usage. Fix this by explicitly moving the `UniValue` objects.

  Used by `rest_block` and `getblock` RPC.

ACKs for top commit:
  maflcko:
    review ACK b77bad309e
  ismaelsadeeq:
    ACK b77bad309e
  TheCharlatan:
    ACK b77bad309e
  theuni:
    utACK b77bad309e
  hebasto:
    ACK b77bad309e, I have reviewed the code and it looks OK.
  BrandonOdiwuor:
    ACK b77bad309e

Tree-SHA512: 767608331040f9cfe5c3568ed0e3c338920633472a1a50d4bbb47d1dc69d2bb11466d611f050ac8ad1a894b47fe1ea4d968cf34cbd44d4bb8d479fc5c7475f6d
This commit is contained in:
Ryan Ofsky 2024-05-13 16:12:18 -04:00
commit 0503cbea9a
No known key found for this signature in database
GPG key ID: 46800E30FC748A66

View file

@ -188,12 +188,12 @@ UniValue blockToJSON(BlockManager& blockman, const CBlock& block, const CBlockIn
const CTxUndo* txundo = (have_undo && i > 0) ? &blockUndo.vtxundo.at(i - 1) : nullptr; const CTxUndo* txundo = (have_undo && i > 0) ? &blockUndo.vtxundo.at(i - 1) : nullptr;
UniValue objTx(UniValue::VOBJ); UniValue objTx(UniValue::VOBJ);
TxToUniv(*tx, /*block_hash=*/uint256(), /*entry=*/objTx, /*include_hex=*/true, txundo, verbosity); TxToUniv(*tx, /*block_hash=*/uint256(), /*entry=*/objTx, /*include_hex=*/true, txundo, verbosity);
txs.push_back(objTx); txs.push_back(std::move(objTx));
} }
break; break;
} }
result.pushKV("tx", txs); result.pushKV("tx", std::move(txs));
return result; return result;
} }