added support for MINMATCH=3 on big endian architecture
changed ZSTD_HASHLOG3_MIN to 2 (4 bytes for MINMACH > 3)
diff --git a/lib/mem.h b/lib/mem.h
index a369033..ceafd57 100644
--- a/lib/mem.h
+++ b/lib/mem.h
@@ -187,17 +187,6 @@
#endif /* MEM_FORCE_MEMORY_ACCESS */
-
-MEM_STATIC U32 MEM_readMINMATCH(const void* memPtr, U32 length)
-{
- switch (length)
- {
- default :
- case 4 : return MEM_read32(memPtr);
- case 3 : return MEM_read32(memPtr)<<8;
- }
-}
-
MEM_STATIC U16 MEM_readLE16(const void* memPtr)
{
if (MEM_isLittleEndian())
@@ -286,6 +275,20 @@
MEM_writeLE64(memPtr, (U64)val);
}
+ /* function safe only for comparisons */
+MEM_STATIC U32 MEM_readMINMATCH(const void* memPtr, U32 length)
+{
+ switch (length)
+ {
+ default :
+ case 4 : return MEM_read32(memPtr);
+ case 3 : if (MEM_isLittleEndian())
+ return MEM_read32(memPtr)<<8;
+ else
+ return MEM_read32(memPtr)>>8;
+ }
+}
+
#if defined (__cplusplus)
}
#endif