From fc4e45562dfe86a9086db9da37bd14f561d406aa Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 2 Jan 2019 06:06:09 +0100 Subject: [PATCH] Use stringstream to log integral values. --- src/openrct2/core/DataSerialiserTraits.h | 27 ++++++++++-------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/openrct2/core/DataSerialiserTraits.h b/src/openrct2/core/DataSerialiserTraits.h index c4a5c8b3f1..a95cebe730 100644 --- a/src/openrct2/core/DataSerialiserTraits.h +++ b/src/openrct2/core/DataSerialiserTraits.h @@ -19,6 +19,9 @@ #include "MemoryStream.h" #include +#include +#include +#include #include template struct DataSerializerTraits @@ -43,19 +46,11 @@ template struct DataSerializerTraitsIntegral } static void log(IStream* stream, const T& val) { - char temp[32] = {}; - if constexpr (sizeof(T) == 1) - snprintf(temp, sizeof(temp), "%02X", val); - else if constexpr (sizeof(T) == 2) - snprintf(temp, sizeof(temp), "%04X", val); - else if constexpr (sizeof(T) == 4) - snprintf(temp, sizeof(temp), "%08X", val); - else if constexpr (sizeof(T) == 8) - snprintf(temp, sizeof(temp), "%016llX", val); - else - static_assert("Invalid size"); + std::stringstream ss; + ss << std::hex << std::setw(sizeof(T) * 2) << std::setfill('0') << +val; - stream->Write(temp, strlen(temp)); + std::string str = ss.str(); + stream->Write(str.c_str(), str.size()); } }; @@ -132,9 +127,9 @@ template<> struct DataSerializerTraits } static void log(IStream* stream, const std::string& str) { - stream->Write("\""); + stream->Write("\"", 1); stream->Write(str.data(), str.size()); - stream->Write("\""); + stream->Write("\"", 1); } }; @@ -287,13 +282,13 @@ template struct DataSerializerTraits& val) { - stream->Write("{"); + stream->Write("{", 1); DataSerializerTraits<_Ty> s; for (auto&& sub : val) { s.log(stream, sub); stream->Write("; ", 2); } - stream->Write("}"); + stream->Write("}", 1); } };