diff --git a/uppsrc/Core/Defs.h b/uppsrc/Core/Defs.h index 75a79606d..72ad5019f 100644 --- a/uppsrc/Core/Defs.h +++ b/uppsrc/Core/Defs.h @@ -829,14 +829,13 @@ int fast_memcmp(const char *a, const char *b, size_t len) b += 8; len -= 8; } - if(len >= 4) { + if(len & 4) { uint32 a32 = *(uint32 *)a; uint32 b32 = *(uint32 *)b; if(a32 != b32) return SwapEndian32(a32) < SwapEndian32(b32) ? -1 : 1; a += 4; b += 4; - len -= 4; } #else while(len >= 4) { @@ -849,16 +848,15 @@ int fast_memcmp(const char *a, const char *b, size_t len) len -= 4; } #endif - if(len >= 2) { + if(len & 2) { uint16 a16 = *(uint16 *)a; uint16 b16 = *(uint16 *)b; if(a16 != b16) return SwapEndian16(a16) < SwapEndian16(b16) ? -1 : 1; a += 2; b += 2; - len -= 2; } - if(len && *a != *b) + if((len & 1) != 0 && *a != *b) return *a < *b ? -1 : 1; return 0; }