mirror of
https://github.com/dashpay/dash.git
synced 2024-12-28 21:42:47 +01:00
188f4a7522
6835cb0ab
Avoid static analyzer warnings regarding uninitialized arguments (practicalswift)
Pull request description:
Avoid static analyzer warnings regarding _"Function call argument is a pointer to uninitialized value"_ in cases where we are intentionally using such arguments.
This is achieved by using `f(b.begin(), b.end())` (`std::array<char, N>`) instead of `f(b, b + N)` (`char b[N]`).
Rationale:
* Reduce false positives by guiding static analyzers regarding our intentions.
Before this commit:
```shell
$ clang-tidy-3.5 -checks=* src/bench/base58.cpp
bench/base58.cpp:23:9: warning: Function call argument is a pointer to uninitialized value [clang-analyzer-core.CallAndMessage]
EncodeBase58(b, b + 32);
^
$ clang-tidy-3.5 -checks=* src/bench/verify_script.cpp
bench/verify_script.cpp:59:5: warning: Function call argument is a pointer to uninitialized value [clang-analyzer-core.CallAndMessage]
key.Set(vchKey, vchKey + 32, false);
^
$
```
After this commit:
```shell
$ clang-tidy-3.5 -checks=* src/bench/base58.cpp
$ clang-tidy-3.5 -checks=* src/bench/verify_script.cpp
$
```
Tree-SHA512: 5814a320ca8b959d0954bb64393424bcad73f942d2e988de1cd6788f39153b93900325532f2e340de02d740a3953385d212ae08e7ec72bb4c394a40475f251df
60 lines
1.5 KiB
C++
60 lines
1.5 KiB
C++
// Copyright (c) 2016 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#include "bench.h"
|
|
|
|
#include "validation.h"
|
|
#include "base58.h"
|
|
|
|
#include <array>
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
|
|
static void Base58Encode(benchmark::State& state)
|
|
{
|
|
static const std::array<unsigned char, 32> buff = {
|
|
{
|
|
17, 79, 8, 99, 150, 189, 208, 162, 22, 23, 203, 163, 36, 58, 147,
|
|
227, 139, 2, 215, 100, 91, 38, 11, 141, 253, 40, 117, 21, 16, 90,
|
|
200, 24
|
|
}
|
|
};
|
|
while (state.KeepRunning()) {
|
|
EncodeBase58(buff.begin(), buff.end());
|
|
}
|
|
}
|
|
|
|
|
|
static void Base58CheckEncode(benchmark::State& state)
|
|
{
|
|
static const std::array<unsigned char, 32> buff = {
|
|
{
|
|
17, 79, 8, 99, 150, 189, 208, 162, 22, 23, 203, 163, 36, 58, 147,
|
|
227, 139, 2, 215, 100, 91, 38, 11, 141, 253, 40, 117, 21, 16, 90,
|
|
200, 24
|
|
}
|
|
};
|
|
std::vector<unsigned char> vch;
|
|
vch.assign(buff.begin(), buff.end());
|
|
while (state.KeepRunning()) {
|
|
EncodeBase58Check(vch);
|
|
}
|
|
}
|
|
|
|
|
|
static void Base58Decode(benchmark::State& state)
|
|
{
|
|
const char* addr = "17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem";
|
|
std::vector<unsigned char> vch;
|
|
while (state.KeepRunning()) {
|
|
DecodeBase58(addr, vch);
|
|
}
|
|
}
|
|
|
|
|
|
BENCHMARK(Base58Encode);
|
|
BENCHMARK(Base58CheckEncode);
|
|
BENCHMARK(Base58Decode);
|