diff --git a/lib_com/options.h b/lib_com/options.h old mode 100755 new mode 100644 index e720e4b6648cd9dfd5193e1d1496e4cc054c27e6..6e9f3d7710b7e2b0f06a5a7622e2ba97f5bd9260 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -160,6 +160,7 @@ #define FIX_993_REMOVE_SBA_GET_ORDER /* VA: issue 993: remove unused function ivas_sba_get_order() */ #define FIX_1002_DEC_PHASE_ECU_USAN_OF_PHASE /* Eri: issue #1002, usan-value-out-of-range-for-int16, kept BE for PLC-conditions */ #define FIX_960_SYN_OUTPUT /* VA: issue 960: unused function syn_output() is removed */ +#define FIX_1027_GSC_INT_OVERFLOW /* VA: issue 2207: overflow in GSC */ /* #################### End BE switches ################################## */ diff --git a/lib_dec/gs_dec.c b/lib_dec/gs_dec.c index 936518dbbd622a29f2d97bfb481360ac7409e65f..7319a556152d731e8579990d84b6a3a8827f2e13 100644 --- a/lib_dec/gs_dec.c +++ b/lib_dec/gs_dec.c @@ -643,7 +643,11 @@ void gsc_dec( } if ( concat_out[j] < 0 ) { +#ifdef FIX_1027_GSC_INT_OVERFLOW + seed_init = (int16_t) ( (int32_t) seed_init + 3 ); +#else seed_init += 3; +#endif } } diff --git a/lib_enc/gs_enc.c b/lib_enc/gs_enc.c index b8b28f6b9be863115060e1b5fcaf581c2b831279..3ec78d8f11972eec744b4be3d3b3713265d0aa07 100644 --- a/lib_enc/gs_enc.c +++ b/lib_enc/gs_enc.c @@ -545,7 +545,11 @@ void gsc_enc( } if ( concat_out[j] < 0 ) { +#ifdef FIX_1027_GSC_INT_OVERFLOW + seed_init = (int16_t) ( (int32_t) seed_init + 3 ); +#else seed_init += 3; +#endif } }