From bd14f7c629adeaa850f38abbcd177698e327eadf Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Tue, 12 Sep 2023 17:15:33 +0200 Subject: [PATCH] Fix issues introduced with porting to macOS and sync with Windows Signed-off-by: Simon Rozman --- UnitTests/UnitTests.vcxproj | 1 + UnitTests/UnitTests.vcxproj.filters | 3 +++ UnitTests/stream.cpp | 2 +- include/stdex/endian.hpp | 14 ++++++++++++-- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/UnitTests/UnitTests.vcxproj b/UnitTests/UnitTests.vcxproj index 3bd737b38..0b8b298a2 100644 --- a/UnitTests/UnitTests.vcxproj +++ b/UnitTests/UnitTests.vcxproj @@ -128,6 +128,7 @@ + diff --git a/UnitTests/UnitTests.vcxproj.filters b/UnitTests/UnitTests.vcxproj.filters index 09af76837..083565803 100644 --- a/UnitTests/UnitTests.vcxproj.filters +++ b/UnitTests/UnitTests.vcxproj.filters @@ -41,5 +41,8 @@ Header Files + + Header Files + \ No newline at end of file diff --git a/UnitTests/stream.cpp b/UnitTests/stream.cpp index 31c880411..2fcd6599f 100644 --- a/UnitTests/stream.cpp +++ b/UnitTests/stream.cpp @@ -112,7 +112,7 @@ namespace UnitTests sstring filename[count]; stdex::stream::fpos_t start[count]; for (uint32_t i = 0; i < count; ++i) { - filename[i] = filepath + sprintf(_T("stdex-stream-open_close%zu.tmp"), NULL, i); + filename[i] = filepath + sprintf(_T("stdex-stream-open_close%u.tmp"), NULL, i); dat.open(filename[i].c_str(), mode_for_reading | mode_for_writing | share_none | mode_preserve_existing | mode_binary); Assert::IsTrue(dat.ok()); start[i] = dat.tell(); diff --git a/include/stdex/endian.hpp b/include/stdex/endian.hpp index c7edd0d55..61751f7c5 100644 --- a/include/stdex/endian.hpp +++ b/include/stdex/endian.hpp @@ -101,8 +101,18 @@ namespace stdex inline int16_t byteswap(_In_ const int16_t value) { return byteswap(static_cast(value)); } inline int32_t byteswap(_In_ const int32_t value) { return byteswap(static_cast(value)); } inline int64_t byteswap(_In_ const int64_t value) { return byteswap(static_cast(value)); } - inline float byteswap(_In_ const float value) { return byteswap(*reinterpret_cast(&value)); } - inline double byteswap(_In_ const double value) { return byteswap(*reinterpret_cast(&value)); } + + inline float byteswap(_In_ const float value) + { + uint32_t r = byteswap(*reinterpret_cast(&value)); + return *reinterpret_cast(&r); + } + + inline double byteswap(_In_ const double value) + { + uint64_t r = byteswap(*reinterpret_cast(&value)); + return *reinterpret_cast(&r); + } inline void byteswap(_Inout_ uint8_t* value) { assert(value); *value = byteswap(*value); } inline void byteswap(_Inout_ uint16_t* value) { assert(value); *value = byteswap(*value); }