mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-30 02:15:54 +02:00
kernel: Allow null arguments for serialized data
An empty span constructed from an empty vector may have a null data pointer depending on the implementation. Remove the BITCOINKERNEL_ARG_NONNULL requirement for these arguments and instead handle such null arguments in the implementation.
This commit is contained in:
@@ -497,6 +497,9 @@ struct btck_Txid: Handle<btck_Txid, Txid> {};
|
||||
|
||||
btck_Transaction* btck_transaction_create(const void* raw_transaction, size_t raw_transaction_len)
|
||||
{
|
||||
if (raw_transaction == nullptr && raw_transaction_len != 0) {
|
||||
return nullptr;
|
||||
}
|
||||
try {
|
||||
DataStream stream{std::span{reinterpret_cast<const std::byte*>(raw_transaction), raw_transaction_len}};
|
||||
return btck_Transaction::create(std::make_shared<const CTransaction>(deserialize, TX_WITH_WITNESS, stream));
|
||||
@@ -556,6 +559,9 @@ void btck_transaction_destroy(btck_Transaction* transaction)
|
||||
|
||||
btck_ScriptPubkey* btck_script_pubkey_create(const void* script_pubkey, size_t script_pubkey_len)
|
||||
{
|
||||
if (script_pubkey == nullptr && script_pubkey_len != 0) {
|
||||
return nullptr;
|
||||
}
|
||||
auto data = std::span{reinterpret_cast<const uint8_t*>(script_pubkey), script_pubkey_len};
|
||||
return btck_ScriptPubkey::create(data.begin(), data.end());
|
||||
}
|
||||
@@ -1033,6 +1039,9 @@ int btck_chainstate_manager_import_blocks(btck_ChainstateManager* chainman, cons
|
||||
|
||||
btck_Block* btck_block_create(const void* raw_block, size_t raw_block_length)
|
||||
{
|
||||
if (raw_block == nullptr && raw_block_length != 0) {
|
||||
return nullptr;
|
||||
}
|
||||
auto block{std::make_shared<CBlock>()};
|
||||
|
||||
DataStream stream{std::span{reinterpret_cast<const std::byte*>(raw_block), raw_block_length}};
|
||||
|
||||
Reference in New Issue
Block a user