Skip to content

crash in div_l

in 0c11047f, the decoder crash with this bitsteam:

div_l_stereo_24400_32.bit

the problem happens in the function decode_comb_fx() where a negative index is passed to div_l (which is not allowed). The parameters entering decode_comb() in the floating point code are the same.

First, it would be good that someone knowing more about the function deindex_lvq_SHB() (@vasilache? @norvell?) can verify if it is normal to get a negative index and if it is expected then the function could be amended as :

#ifdef FIX_719
IF( index < 0)
{
    IF(LT_32(index, pi0[idx_lead])  )
    {
        idx_sign = 0;
        move16();
     }
     ELSE
     {
         idx_sign = extract_l( div_l( L_shl( L_abs(index), 1 ), pi0[idx_lead] ) ); /*(index/pi0_fx[idx_lead]); */
         idx_sign = negate( idx_sign );
      }
		
}
ELSE 
#endif
{
    idx_sign = extract_l( div_l( L_shl( index, 1 ), pi0[idx_lead] ) ); /*(index/pi0_fx[idx_lead]); */
}
Edited by vaillancour