shithub: opus

Download patch

ref: de473b305c6e18587ee3c205b313e75356e3f540
parent: e1bce7b3f6eff218cd23fe26b115d315e78f3ad6
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Wed Jul 20 19:15:16 EDT 2016

Avoids undefined behaviour from left-shifting negative values

--- a/silk/fixed/find_LTP_FIX.c
+++ b/silk/fixed/find_LTP_FIX.c
@@ -85,10 +85,10 @@
         }
 #else
         for( i = 0; i < LTP_ORDER * LTP_ORDER; i++ ) {
-            XXLTP_Q17_ptr[ i ] = (opus_int32)( ( ((opus_int64)XXLTP_Q17_ptr[ i ]) << 17 ) / temp );
+            XXLTP_Q17_ptr[ i ] = (opus_int32)( silk_LSHIFT64( (opus_int64)XXLTP_Q17_ptr[ i ], 17 ) / temp );
         }
         for( i = 0; i < LTP_ORDER; i++ ) {
-            xXLTP_Q17_ptr[ i ] = (opus_int32)( ( ((opus_int64)xXLTP_Q17_ptr[ i ]) << 17 ) / temp );
+            xXLTP_Q17_ptr[ i ] = (opus_int32)( silk_LSHIFT64( (opus_int64)xXLTP_Q17_ptr[ i ], 17 ) / temp );
         }
 #endif
 TOC(div)