From 7ae868c9c1183c9b91c19c4da7764f78f7fcf9ad Mon Sep 17 00:00:00 2001 From: Matt Swann Date: Tue, 24 Mar 2020 09:18:08 -0700 Subject: [PATCH] Suppress wchar_t to char narrowing when constructing error messages (#115) --- krabs/krabs/guid.hpp | 3 +++ krabs/krabs/tdh_helpers.hpp | 3 +++ krabs/krabs/testing/record_builder.hpp | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/krabs/krabs/guid.hpp b/krabs/krabs/guid.hpp index f29b710..c19931b 100644 --- a/krabs/krabs/guid.hpp +++ b/krabs/krabs/guid.hpp @@ -59,7 +59,10 @@ namespace krabs { { HRESULT hr = CLSIDFromString(guid.c_str(), &guid_); if (FAILED(hr)) { +#pragma warning(push) +#pragma warning(disable: 4244) // narrowing guid wchar_t to char for this error message std::string guidStr(guid.begin(), guid.end()); +#pragma warning(pop) std::stringstream stream; stream << "Error in constructing guid from string ("; stream << guidStr; diff --git a/krabs/krabs/tdh_helpers.hpp b/krabs/krabs/tdh_helpers.hpp index b50f744..515b959 100644 --- a/krabs/krabs/tdh_helpers.hpp +++ b/krabs/krabs/tdh_helpers.hpp @@ -101,7 +101,10 @@ namespace krabs { if (requested == actual) return; +#pragma warning(push) +#pragma warning(disable: 4244) // narrowing property name wchar_t to char for this error message std::string ansiName(name.begin(), name.end()); +#pragma warning(pop) throw type_mismatch_assert( ansiName.c_str(), diff --git a/krabs/krabs/testing/record_builder.hpp b/krabs/krabs/testing/record_builder.hpp index 894c7e2..3623b27 100644 --- a/krabs/krabs/testing/record_builder.hpp +++ b/krabs/krabs/testing/record_builder.hpp @@ -233,8 +233,12 @@ namespace krabs { namespace testing { if (!results.second.empty()) { std::string msg = "Not all the properties of the event were filled:"; - for (auto& s : results.second) + for (auto& s : results.second) { +#pragma warning(push) +#pragma warning(disable: 4244) // narrowing property name wchar_t to char for this error message msg += " " + std::string(s.begin(), s.end()); +#pragma warning(pop) + } throw std::invalid_argument(msg); }