Commit 739ee6df authored by Manuel Jander's avatar Manuel Jander
Browse files

Fix memory error if st->L_frame is 320 but st->L_frame was > 320 during initialization.

parent 78a45329
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1435,14 +1435,16 @@ ivas_error ivas_compute_core_buffers_fx(
        ivas_find_wsp_fx( L_FRAME16k, L_SUBFR, NB_SUBFR16k, A_fx, Aw_fx, st->speech_enc_pe, PREEMPH_FAC_16k, st->wspeech_enc, &st->mem_wsp_enc, st->gamma, L_LOOK_16k );
#ifdef NONBE_FIX_ISSUE_2206
        Word16 tmp;
        // L_FRAME16k + L_SUBFR / L_FRAME16k + L_NEXT_MAX_16k + 320
        //                        L_FRAME16k + L_LOOK_16k
        tmp = norm_arr( st->wspeech_enc, L_FRAME16k + L_LOOK_16k );
        tmp = s_min( tmp, norm_arr( st->buf_wspeech_enc, (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) ) );
        tmp = s_min( tmp, norm_arr( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, /* L_NEXT_MAX_16k + */ 320 ) );
        assert( ( st->wspeech_enc - st->buf_wspeech_enc ) + L_FRAME16k + L_LOOK_16k <=  L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 );
        tmp = s_min( tmp, norm_arr( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 - ( ( st->wspeech_enc - st->buf_wspeech_enc ) +  L_FRAME16k + L_LOOK_16k ) ) );
        tmp = add( s_min( sub( Q15, st->exp_buf_speech_enc_pe ), sub( Q15, st->exp_buf_wspeech_enc ) ), tmp );
        scale_sig( st->buf_wspeech_enc, (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ), sub( tmp, sub( Q15, st->exp_buf_wspeech_enc ) ) );
        scale_sig( st->wspeech_enc, L_FRAME16k + L_LOOK_16k, sub( tmp, sub( Q15, st->exp_buf_speech_enc_pe ) ) );
        scale_sig( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, /* L_NEXT_MAX_16k + */ 320, sub( tmp, sub( Q15, st->exp_buf_wspeech_enc ) ) );
        scale_sig( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 - ( ( st->wspeech_enc - st->buf_wspeech_enc ) +  L_FRAME16k + L_LOOK_16k ), sub( tmp, sub( Q15, st->exp_buf_wspeech_enc ) ) );
        st->exp_buf_wspeech_enc = tmp;
        move16();
#endif