diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a04dc5..af2e603 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,12 +112,11 @@ if(ENABLE_LLVM_COVERAGE) add_compile_options(-fprofile-instr-generate -fcoverage-mapping) 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_COV "llvm-cov" CACHE STRING "Path to llvm-cov") # Custom target to run tests and produce coverage report - # Usage: cmake --build build --target coverage_llvm --config Release add_custom_target( coverage_llvm COMMAND ${CMAKE_COMMAND} -E env diff --git a/src/base58.cpp b/src/base58.cpp index 6697475..af1c5bf 100644 --- a/src/base58.cpp +++ b/src/base58.cpp @@ -16,18 +16,19 @@ std::string Base58::encode(const std::vector& data) { } // Convert to base58 - std::vector digits(static_cast((data.size() - leading_zeros) * 138 / 100 + 1)); + size_t digits_size = (data.size() - leading_zeros) * 138 / 100 + 1; + std::vector digits(digits_size); size_t digitslen = 1; for (size_t i = leading_zeros; i < data.size(); i++) { - unsigned int carry = data[i]; + size_t carry = static_cast(data[i]); for (size_t j = 0; j < digitslen; j++) { - carry += (unsigned int)(digits[j]) << 8; - digits[j] = carry % 58; + carry += static_cast(digits[j]) << 8; + digits[j] = static_cast(carry % 58); carry /= 58; } while (carry > 0) { - digits[digitslen++] = carry % 58; + digits[digitslen++] = static_cast(carry % 58); carry /= 58; } } @@ -56,22 +57,23 @@ std::vector Base58::decode(const std::string& encoded) { } // Convert from base58 - std::vector bytes((encoded.length() - leading_ones) * 733 / 1000 + 1); + size_t bytes_size = (encoded.length() - leading_ones) * 733 / 1000 + 1; + std::vector bytes(bytes_size); size_t byteslen = 1; for (size_t i = leading_ones; i < encoded.length(); i++) { - unsigned int carry = ALPHABET.find(encoded[i]); + size_t carry = static_cast(ALPHABET.find(encoded[i])); if (carry == std::string::npos) { throw std::invalid_argument("Invalid character in Base58 string"); } for (size_t j = 0; j < byteslen; j++) { - carry += (unsigned int)(bytes[j]) * 58; - bytes[j] = carry & 0xff; + carry += static_cast(bytes[j]) * 58; + bytes[j] = static_cast(carry & 0xff); carry >>= 8; } while (carry > 0) { - bytes[byteslen++] = carry & 0xff; + bytes[byteslen++] = static_cast(carry & 0xff); carry >>= 8; } }