Avoid casting arbitrary values to an enum
The enum only contains the constant values 0, 1 and 2. This produces the warning "comparison of constant 6 with expression of type 'PS_RESOLUTION' is always false" in clang for the first check in the getNoBands function (but apparently not for the second one even though mode>=3 shouldn't ever happen for a valid PS_RESOLUTION value either). This could allow the compiler to completely remove the conditions that shouldn't be able to occur even though they actually are used and are necessary. By passing the value as UINT instead, it is clear to the compiler that all the checks are necessary.
This commit is contained in:
parent
b41a6f9e81
commit
c8002b04ff
@ -267,13 +267,13 @@ static const INT psBands[] =
|
||||
PS_BANDS_MID
|
||||
};
|
||||
|
||||
static INT getNoBands(PS_RESOLUTION mode)
|
||||
static INT getNoBands(UINT mode)
|
||||
{
|
||||
if(mode>=6)
|
||||
return 0;
|
||||
|
||||
if(mode>=3)
|
||||
mode = (PS_RESOLUTION)(mode-3);
|
||||
mode = mode-3;
|
||||
|
||||
return psBands[mode];
|
||||
}
|
||||
@ -524,7 +524,7 @@ static INT encodeIpdOpd(HANDLE_PS_OUT psOut,
|
||||
bitCnt += FDKsbrEnc_EncodeIpd( hBitBuf,
|
||||
psOut->ipd[env],
|
||||
ipdLast,
|
||||
getNoBands((PS_RESOLUTION)psOut->iidMode),
|
||||
getNoBands((UINT)psOut->iidMode),
|
||||
psOut->deltaIPD[env],
|
||||
&error);
|
||||
|
||||
@ -532,7 +532,7 @@ static INT encodeIpdOpd(HANDLE_PS_OUT psOut,
|
||||
bitCnt += FDKsbrEnc_EncodeOpd( hBitBuf,
|
||||
psOut->opd[env],
|
||||
opdLast,
|
||||
getNoBands((PS_RESOLUTION)psOut->iidMode),
|
||||
getNoBands((UINT)psOut->iidMode),
|
||||
psOut->deltaOPD[env],
|
||||
&error );
|
||||
}
|
||||
@ -661,7 +661,7 @@ INT FDKsbrEnc_WritePSBitstream(const HANDLE_PS_OUT psOut,
|
||||
bitCnt += FDKsbrEnc_EncodeIid( hBitBuf,
|
||||
psOut->iid[env],
|
||||
iidLast,
|
||||
getNoBands((PS_RESOLUTION)psOut->iidMode),
|
||||
getNoBands((UINT)psOut->iidMode),
|
||||
(PS_IID_RESOLUTION)getIIDRes(psOut->iidMode),
|
||||
psOut->deltaIID[env],
|
||||
&error );
|
||||
@ -677,7 +677,7 @@ INT FDKsbrEnc_WritePSBitstream(const HANDLE_PS_OUT psOut,
|
||||
bitCnt += FDKsbrEnc_EncodeIcc( hBitBuf,
|
||||
psOut->icc[env],
|
||||
iccLast,
|
||||
getNoBands((PS_RESOLUTION)psOut->iccMode),
|
||||
getNoBands((UINT)psOut->iccMode),
|
||||
psOut->deltaICC[env],
|
||||
&error);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user