Merge pull request #2918 from lioncash/memcpy

DataReader: Get rid of pointer casts
This commit is contained in:
Markus Wick 2015-08-28 20:45:15 +02:00
commit b11de5bddb

View File

@ -4,7 +4,9 @@
#pragma once #pragma once
#include "Common/Common.h" #include <cstring>
#include "Common/CommonFuncs.h"
#include "Common/CommonTypes.h"
class DataReader class DataReader
{ {
@ -33,9 +35,12 @@ public:
template <typename T, bool swapped = true> __forceinline T Peek(int offset = 0) template <typename T, bool swapped = true> __forceinline T Peek(int offset = 0)
{ {
T data = *(T*)(buffer + offset); T data;
std::memcpy(&data, &buffer[offset], sizeof(T));
if (swapped) if (swapped)
data = Common::FromBigEndian(data); data = Common::FromBigEndian(data);
return data; return data;
} }
@ -50,7 +55,8 @@ public:
{ {
if (swapped) if (swapped)
data = Common::FromBigEndian(data); data = Common::FromBigEndian(data);
*(T*)(buffer) = data;
std::memcpy(buffer, &data, sizeof(T));
buffer += sizeof(T); buffer += sizeof(T);
} }