From d15d99ecc29ed9c30803197af09f2e5937b911c9 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 4 Oct 2016 05:12:23 -0400 Subject: [PATCH] CommonFuncs: Get rid of pointer casting --- Source/Core/Common/CommonFuncs.h | 34 +++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/Source/Core/Common/CommonFuncs.h b/Source/Core/Common/CommonFuncs.h index 8dd7d0f6d1..f46b72686d 100644 --- a/Source/Core/Common/CommonFuncs.h +++ b/Source/Core/Common/CommonFuncs.h @@ -9,6 +9,7 @@ #endif #include +#include #include #include "Common/CommonTypes.h" @@ -190,17 +191,26 @@ inline u64 swap64(u64 data) } #endif -inline u16 swap16(const u8* _pData) +inline u16 swap16(const u8* data) { - return swap16(*(const u16*)_pData); + u16 value; + std::memcpy(&value, data, sizeof(u16)); + + return swap16(value); } -inline u32 swap32(const u8* _pData) +inline u32 swap32(const u8* data) { - return swap32(*(const u32*)_pData); + u32 value; + std::memcpy(&value, data, sizeof(u32)); + + return swap32(value); } -inline u64 swap64(const u8* _pData) +inline u64 swap64(const u8* data) { - return swap64(*(const u64*)_pData); + u64 value; + std::memcpy(&value, data, sizeof(u64)); + + return swap64(value); } template @@ -214,19 +224,25 @@ inline void swap<1>(u8* data) template <> inline void swap<2>(u8* data) { - *reinterpret_cast(data) = swap16(data); + const u16 value = swap16(data); + + std::memcpy(data, &value, sizeof(u16)); } template <> inline void swap<4>(u8* data) { - *reinterpret_cast(data) = swap32(data); + const u32 value = swap32(data); + + std::memcpy(data, &value, sizeof(u32)); } template <> inline void swap<8>(u8* data) { - *reinterpret_cast(data) = swap64(data); + const u64 value = swap64(data); + + std::memcpy(data, &value, sizeof(u64)); } template