Fix type conversion warnings in base58.cpp and improve CMake syntax

This commit is contained in:
mbusc
2025-08-28 21:43:46 +02:00
parent 4add1edd11
commit 3b4d591eff
2 changed files with 13 additions and 12 deletions

View File

@ -112,12 +112,11 @@ if(ENABLE_LLVM_COVERAGE)
add_compile_options(-fprofile-instr-generate -fcoverage-mapping) add_compile_options(-fprofile-instr-generate -fcoverage-mapping)
add_link_options(-fprofile-instr-generate) add_link_options(-fprofile-instr-generate)
# Helper variables for report tools (can be overridden from environment) # Helper variables for report tools
set(LLVM_PROFDATA "llvm-profdata" CACHE STRING "Path to llvm-profdata") set(LLVM_PROFDATA "llvm-profdata" CACHE STRING "Path to llvm-profdata")
set(LLVM_COV "llvm-cov" CACHE STRING "Path to llvm-cov") set(LLVM_COV "llvm-cov" CACHE STRING "Path to llvm-cov")
# Custom target to run tests and produce coverage report # Custom target to run tests and produce coverage report
# Usage: cmake --build build --target coverage_llvm --config Release
add_custom_target( add_custom_target(
coverage_llvm coverage_llvm
COMMAND ${CMAKE_COMMAND} -E env COMMAND ${CMAKE_COMMAND} -E env

View File

@ -16,18 +16,19 @@ std::string Base58::encode(const std::vector<unsigned char>& data) {
} }
// Convert to base58 // Convert to base58
std::vector<unsigned char> digits(static_cast<size_t>((data.size() - leading_zeros) * 138 / 100 + 1)); size_t digits_size = (data.size() - leading_zeros) * 138 / 100 + 1;
std::vector<unsigned char> digits(digits_size);
size_t digitslen = 1; size_t digitslen = 1;
for (size_t i = leading_zeros; i < data.size(); i++) { for (size_t i = leading_zeros; i < data.size(); i++) {
unsigned int carry = data[i]; size_t carry = static_cast<size_t>(data[i]);
for (size_t j = 0; j < digitslen; j++) { for (size_t j = 0; j < digitslen; j++) {
carry += (unsigned int)(digits[j]) << 8; carry += static_cast<size_t>(digits[j]) << 8;
digits[j] = carry % 58; digits[j] = static_cast<unsigned char>(carry % 58);
carry /= 58; carry /= 58;
} }
while (carry > 0) { while (carry > 0) {
digits[digitslen++] = carry % 58; digits[digitslen++] = static_cast<unsigned char>(carry % 58);
carry /= 58; carry /= 58;
} }
} }
@ -56,22 +57,23 @@ std::vector<unsigned char> Base58::decode(const std::string& encoded) {
} }
// Convert from base58 // Convert from base58
std::vector<unsigned char> bytes((encoded.length() - leading_ones) * 733 / 1000 + 1); size_t bytes_size = (encoded.length() - leading_ones) * 733 / 1000 + 1;
std::vector<unsigned char> bytes(bytes_size);
size_t byteslen = 1; size_t byteslen = 1;
for (size_t i = leading_ones; i < encoded.length(); i++) { for (size_t i = leading_ones; i < encoded.length(); i++) {
unsigned int carry = ALPHABET.find(encoded[i]); size_t carry = static_cast<size_t>(ALPHABET.find(encoded[i]));
if (carry == std::string::npos) { if (carry == std::string::npos) {
throw std::invalid_argument("Invalid character in Base58 string"); throw std::invalid_argument("Invalid character in Base58 string");
} }
for (size_t j = 0; j < byteslen; j++) { for (size_t j = 0; j < byteslen; j++) {
carry += (unsigned int)(bytes[j]) * 58; carry += static_cast<size_t>(bytes[j]) * 58;
bytes[j] = carry & 0xff; bytes[j] = static_cast<unsigned char>(carry & 0xff);
carry >>= 8; carry >>= 8;
} }
while (carry > 0) { while (carry > 0) {
bytes[byteslen++] = carry & 0xff; bytes[byteslen++] = static_cast<unsigned char>(carry & 0xff);
carry >>= 8; carry >>= 8;
} }
} }