restored DStream init
due to strange speed regressions and warnins on gcc 5.3
This commit is contained in:
+11
-3
@@ -271,11 +271,19 @@ MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, si
|
|||||||
if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */
|
if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */
|
||||||
bitD->bitsConsumed = 8 - BIT_highbit32(lastByte); }
|
bitD->bitsConsumed = 8 - BIT_highbit32(lastByte); }
|
||||||
} else {
|
} else {
|
||||||
BYTE tmp[8] = {0};
|
|
||||||
memcpy(tmp, srcBuffer, srcSize);
|
|
||||||
bitD->start = (const char*)srcBuffer;
|
bitD->start = (const char*)srcBuffer;
|
||||||
bitD->ptr = bitD->start;
|
bitD->ptr = bitD->start;
|
||||||
bitD->bitContainer = MEM_readLEST(tmp);
|
bitD->bitContainer = *(const BYTE*)(bitD->start);
|
||||||
|
switch(srcSize)
|
||||||
|
{
|
||||||
|
case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16);
|
||||||
|
case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24);
|
||||||
|
case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32);
|
||||||
|
case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24;
|
||||||
|
case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16;
|
||||||
|
case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
{ BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
|
{ BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1];
|
||||||
if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */
|
if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */
|
||||||
bitD->bitsConsumed = 8 - BIT_highbit32(lastByte); }
|
bitD->bitsConsumed = 8 - BIT_highbit32(lastByte); }
|
||||||
|
|||||||
Reference in New Issue
Block a user