Index: third_party/opus/src/silk/fixed/schur_FIX.c |
diff --git a/third_party/opus/src/silk/fixed/schur_FIX.c b/third_party/opus/src/silk/fixed/schur_FIX.c |
index c4c0ef23b47804e5f56c7c5d58c66556eef5a01e..59d44a6f7fe858c21eebca31b6be4430acd48319 100644 |
--- a/third_party/opus/src/silk/fixed/schur_FIX.c |
+++ b/third_party/opus/src/silk/fixed/schur_FIX.c |
@@ -43,28 +43,29 @@ opus_int32 silk_schur( /* O Returns residual ene |
opus_int32 C[ SILK_MAX_ORDER_LPC + 1 ][ 2 ]; |
opus_int32 Ctmp1, Ctmp2, rc_tmp_Q15; |
- silk_assert( order==6||order==8||order==10||order==12||order==14||order==16 ); |
+ silk_assert( order >= 0 && order <= SILK_MAX_ORDER_LPC ); |
/* Get number of leading zeros */ |
lz = silk_CLZ32( c[ 0 ] ); |
/* Copy correlations and adjust level to Q30 */ |
+ k = 0; |
if( lz < 2 ) { |
/* lz must be 1, so shift one to the right */ |
- for( k = 0; k < order + 1; k++ ) { |
+ do { |
C[ k ][ 0 ] = C[ k ][ 1 ] = silk_RSHIFT( c[ k ], 1 ); |
- } |
+ } while( ++k <= order ); |
} else if( lz > 2 ) { |
/* Shift to the left */ |
lz -= 2; |
- for( k = 0; k < order + 1; k++ ) { |
+ do { |
C[ k ][ 0 ] = C[ k ][ 1 ] = silk_LSHIFT( c[ k ], lz ); |
- } |
+ } while( ++k <= order ); |
} else { |
/* No need to shift */ |
- for( k = 0; k < order + 1; k++ ) { |
+ do { |
C[ k ][ 0 ] = C[ k ][ 1 ] = c[ k ]; |
- } |
+ } while( ++k <= order ); |
} |
for( k = 0; k < order; k++ ) { |