Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions OgreMain/src/Hash/MurmurHash3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

#include "OgrePlatform.h"
#include "Hash/MurmurHash3.h"
#include <string.h>

//-----------------------------------------------------------------------------
// Platform-specific functions and macros
Expand Down Expand Up @@ -54,17 +55,20 @@ inline uint64_t rotl64 ( uint64_t x, int8_t r )
namespace Ogre
{
//-----------------------------------------------------------------------------
// Block read - if your platform needs to do endian-swapping or can only
// handle aligned reads, do the conversion here
// Block read - if your platform needs to do endian-swapping, do the conversion here

FORCE_INLINE uint32_t getblock32 ( const uint32_t * p, int i )
FORCE_INLINE uint32_t getblock32 ( const uint8_t * p, int i )
{
return p[i];
uint32_t dest;
memcpy( &dest, p + i * static_cast<int>(sizeof(uint32_t)), sizeof(uint32_t) );
return dest;
}

FORCE_INLINE uint64_t getblock64 ( const uint64_t * p, int i )
FORCE_INLINE uint64_t getblock64 ( const uint8_t * p, int i )
{
return p[i];
uint64_t dest;
memcpy( &dest, p + i * static_cast<int>(sizeof(uint64_t)), sizeof(uint64_t) );
return dest;
}

//-----------------------------------------------------------------------------
Expand Down Expand Up @@ -110,7 +114,7 @@ void _OgreExport MurmurHash3_x86_32 ( const void * key, const int len,
//----------
// body

const uint32_t * blocks = (const uint32_t *)(data + nblocks*4);
const uint8_t * blocks = (const uint8_t *)(data + nblocks*4);

for(int i = -nblocks; i; i++)
{
Expand Down Expand Up @@ -171,7 +175,7 @@ void _OgreExport MurmurHash3_x86_128 ( const void * key, const int len,
//----------
// body

const uint32_t * blocks = (const uint32_t *)(data + nblocks*16);
const uint8_t * blocks = (const uint8_t *)(data + nblocks*16);

for(int i = -nblocks; i; i++)
{
Expand Down Expand Up @@ -272,7 +276,7 @@ void _OgreExport MurmurHash3_x64_128 ( const void * key, const int len,
//----------
// body

const uint64_t * blocks = (const uint64_t *)(data);
const uint8_t * blocks = (const uint8_t *)(data);

for(int i = 0; i < nblocks; i++)
{
Expand Down