libfreerdp-codec: fix strict aliasing warnings in ncrush code

This commit is contained in:
Marc-André Moreau 2014-07-08 15:59:23 -04:00
parent c492017fa1
commit ee8c0906f0

View File

@ -1768,6 +1768,7 @@ int ncrush_decompress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BY
BYTE* SrcPtr;
BYTE* SrcEnd;
UINT16 Mask;
UINT16* pMask;
BYTE Literal;
UINT32 IndexLEC;
UINT32 BitLength;
@ -1829,7 +1830,8 @@ int ncrush_decompress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BY
{
while (1)
{
Mask = *((UINT16*) &HuffTableMask[29]);
pMask = (UINT16*) &HuffTableMask[29];
Mask = *pMask;
MaskedBits = bits & Mask;
IndexLEC = HuffTableLEC[MaskedBits] & 0xFFF;
@ -1869,7 +1871,8 @@ int ncrush_decompress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BY
CopyOffset = ncrush->OffsetCache[OffsetCacheIndex];
Mask = *((UINT16*) &HuffTableMask[21]);
pMask = (UINT16*) &HuffTableMask[21];
Mask = *pMask;
MaskedBits = bits & Mask;
LengthOfMatch = HuffTableLOM[MaskedBits] & 0xFFF;
@ -1885,7 +1888,8 @@ int ncrush_decompress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BY
if (LengthOfMatchBits)
{
Mask = *((UINT16*) &HuffTableMask[(2 * LengthOfMatchBits) + 3]);
pMask = (UINT16*) &HuffTableMask[(2 * LengthOfMatchBits) + 3];
Mask = *pMask;
MaskedBits = bits & Mask;
bits >>= LengthOfMatchBits;
@ -1908,7 +1912,8 @@ int ncrush_decompress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BY
if (CopyOffsetBits)
{
Mask = *((UINT16*) &HuffTableMask[(2 * CopyOffsetBits) + 3]);
pMask = (UINT16*) &HuffTableMask[(2 * CopyOffsetBits) + 3];
Mask = *pMask;
MaskedBits = bits & Mask;
CopyOffset = CopyOffsetBase + MaskedBits - 1;
@ -1919,7 +1924,8 @@ int ncrush_decompress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BY
NCrushFetchBits();
}
Mask = *((UINT16*) &HuffTableMask[21]);
pMask = (UINT16*) &HuffTableMask[21];
Mask = *pMask;
MaskedBits = bits & Mask;
LengthOfMatch = HuffTableLOM[MaskedBits] & 0xFFF;
@ -1935,7 +1941,8 @@ int ncrush_decompress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BY
if (LengthOfMatchBits)
{
Mask = *((UINT16*) &HuffTableMask[(2 * LengthOfMatchBits) + 3]);
pMask = (UINT16*) &HuffTableMask[(2 * LengthOfMatchBits) + 3];
Mask = *pMask;
MaskedBits = bits & Mask;
bits >>= LengthOfMatchBits;
@ -2248,6 +2255,7 @@ int ncrush_compress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BYTE
UINT32 IndexLOM;
UINT32 IndexCO;
UINT32 CodeLEC;
UINT16* pCodeLEC;
UINT32 BitLength;
UINT32 CopyOffset;
UINT32 MatchOffset;
@ -2367,7 +2375,8 @@ int ncrush_compress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BYTE
IndexLEC = Literal;
BitLength = HuffLengthLEC[IndexLEC];
CodeLEC = *((UINT16*) &HuffCodeLEC[IndexLEC * 2]);
pCodeLEC = (UINT16*) &HuffCodeLEC[IndexLEC * 2];
CodeLEC = (UINT32) *pCodeLEC;
if (BitLength > 15)
return -1006;
@ -2454,7 +2463,8 @@ int ncrush_compress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BYTE
IndexLEC = 257 + CopyOffsetIndex;
BitLength = HuffLengthLEC[IndexLEC];
CodeLEC = *((UINT16*) &HuffCodeLEC[IndexLEC * 2]);
pCodeLEC = (UINT16*) &HuffCodeLEC[IndexLEC * 2];
CodeLEC = (UINT32) *pCodeLEC;
if (BitLength > 15)
return -1008;
@ -2493,7 +2503,8 @@ int ncrush_compress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BYTE
IndexLEC = 289 + OffsetCacheIndex;
BitLength = HuffLengthLEC[IndexLEC];
CodeLEC = *((UINT16*) &HuffCodeLEC[IndexLEC * 2]);
pCodeLEC = (UINT16*) &HuffCodeLEC[IndexLEC * 2];
CodeLEC = (UINT32) *pCodeLEC;
if (BitLength >= 15)
return -1011;
@ -2541,7 +2552,8 @@ int ncrush_compress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BYTE
IndexLEC = Literal;
BitLength = HuffLengthLEC[IndexLEC];
CodeLEC = *((UINT16*) &HuffCodeLEC[IndexLEC * 2]);
pCodeLEC = (UINT16*) &HuffCodeLEC[IndexLEC * 2];
CodeLEC = (UINT32) *pCodeLEC;
if (BitLength > 15)
return -1014;
@ -2565,7 +2577,8 @@ int ncrush_compress(NCRUSH_CONTEXT* ncrush, BYTE* pSrcData, UINT32 SrcSize, BYTE
if (BitLength > 15)
return -1015;
bits = *((UINT16*) &HuffCodeLEC[IndexLEC * 2]);
pCodeLEC = (UINT16*) &HuffCodeLEC[IndexLEC * 2];
bits = (UINT32) *pCodeLEC;
NCrushWriteBits(bits, BitLength);