From 6d2dc6b2fc0a46084158c8cdeb16833d6b4979ba Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Wed, 1 Jul 2015 17:53:03 +0100 Subject: [PATCH] Restrict hex string generation to non-negative values. It turns out the specific generator I use doesn't support signed integers, which is OK, since I only ever plug unsigned integers into it. Updated the function argument type to reflect that. --- src/backend/helpers/helpers.cpp | 2 +- src/backend/helpers/helpers.h | 4 ++-- src/tests/backend/helpers/test_helpers.h | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/backend/helpers/helpers.cpp b/src/backend/helpers/helpers.cpp index c27682b7..3aa6e5e4 100644 --- a/src/backend/helpers/helpers.cpp +++ b/src/backend/helpers/helpers.cpp @@ -92,7 +92,7 @@ namespace loot { } //Converts an integer to a hex string using BOOST's Spirit.Karma, which is apparently a lot faster than a stringstream conversion... - std::string IntToHexString(const int n) { + std::string IntToHexString(const uint32_t n) { string out; back_insert_iterator sink(out); karma::generate(sink, karma::upper[karma::hex], n); diff --git a/src/backend/helpers/helpers.h b/src/backend/helpers/helpers.h index 2835bfd1..c53b8fae 100644 --- a/src/backend/helpers/helpers.h +++ b/src/backend/helpers/helpers.h @@ -33,8 +33,8 @@ namespace loot { //Calculate the CRC of the given file for comparison purposes. uint32_t GetCrc32(const boost::filesystem::path& filename); - //Converts an integer to a hex string using BOOST's Spirit.Karma. Faster than a stringstream conversion. - std::string IntToHexString(const int n); + //Converts an unsigned 32-bit integer to a hex string using BOOST's Spirit.Karma. Faster than a stringstream conversion. + std::string IntToHexString(const uint32_t n); #ifdef _WIN32 //Get registry subkey value string. diff --git a/src/tests/backend/helpers/test_helpers.h b/src/tests/backend/helpers/test_helpers.h index 60aa10ad..bc3e87bf 100644 --- a/src/tests/backend/helpers/test_helpers.h +++ b/src/tests/backend/helpers/test_helpers.h @@ -39,9 +39,8 @@ TEST_F(GetCrc32, ValidFile) { EXPECT_EQ(0x0B5B7B90, loot::GetCrc32(dataPath / "Blank.esp")); } -TEST(IntToHexString, PositiveNegativeZeroValues) { +TEST(IntToHexString, PositiveAndZeroValues) { EXPECT_EQ("14", loot::IntToHexString(20)); - EXPECT_EQ("-14", loot::IntToHexString(-20)); EXPECT_EQ("0", loot::IntToHexString(0)); }