From d8a8fcab421f3f0971dc3391c56c44cd384b4908 Mon Sep 17 00:00:00 2001 From: yperbasis Date: Wed, 17 Jan 2024 23:00:35 +0100 Subject: [PATCH] Address cppcoreguidelines-no-malloc --- .clang-tidy | 1 - silkworm/node/stagedsync/stages/stage_senders.cpp | 3 ++- silkworm/rpc/ethdb/bitmap.cpp | 9 ++------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 80563999a9..170d76f9a0 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -23,7 +23,6 @@ Checks: > -cppcoreguidelines-avoid-non-const-global-variables, -cppcoreguidelines-avoid-reference-coroutine-parameters, -cppcoreguidelines-macro-usage, - -cppcoreguidelines-no-malloc, -cppcoreguidelines-non-private-member-variables-in-classes, -cppcoreguidelines-owning-memory, -cppcoreguidelines-prefer-member-initializer, diff --git a/silkworm/node/stagedsync/stages/stage_senders.cpp b/silkworm/node/stagedsync/stages/stage_senders.cpp index 3c6a0bd1bb..38374932e3 100644 --- a/silkworm/node/stagedsync/stages/stage_senders.cpp +++ b/silkworm/node/stagedsync/stages/stage_senders.cpp @@ -278,7 +278,8 @@ Stage::Result Senders::parallel_recover(db::RWTxn& txn) { secp256k1_context* context = secp256k1_context_create(SILKWORM_SECP256K1_CONTEXT_FLAGS); if (!context) throw std::runtime_error("Could not create elliptic curve context"); - [[maybe_unused]] auto _ = gsl::finally([&]() { if (context) std::free(context); }); + // NOLINTNEXTLINE(cppcoreguidelines-no-malloc) + [[maybe_unused]] auto _ = gsl::finally([&]() { std::free(context); }); BlockNum start_block_num{previous_progress + 1u}; diff --git a/silkworm/rpc/ethdb/bitmap.cpp b/silkworm/rpc/ethdb/bitmap.cpp index 1bab93cb9d..700708947d 100644 --- a/silkworm/rpc/ethdb/bitmap.cpp +++ b/silkworm/rpc/ethdb/bitmap.cpp @@ -32,21 +32,16 @@ using roaring_bitmap_t = roaring::api::roaring_bitmap_t; using Roaring = roaring::Roaring; static Roaring fast_or(size_t n, const std::vector>& inputs) { - const auto** x = static_cast(malloc(n * sizeof(roaring_bitmap_t*))); - if (x == nullptr) { - throw std::runtime_error("failed memory alloc in fast_or"); - } + std::vector x(n); for (size_t k = 0; k < n; ++k) { x[k] = &inputs[k]->roaring; } - roaring_bitmap_t* c_ans = roaring_bitmap_or_many(n, x); + roaring_bitmap_t* c_ans = roaring_bitmap_or_many(n, x.data()); if (c_ans == nullptr) { - free(x); throw std::runtime_error("failed memory alloc in fast_or"); } Roaring ans(c_ans); - free(x); return ans; }