diff --git a/lib_com/options.h b/lib_com/options.h old mode 100755 new mode 100644 index 32cff6aa940080717a5f543c9d3c843c87333a42..7b42e8dfa305976a15b603b102b0ef41466cf676 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -187,6 +187,7 @@ #define NONBE_FIX_760_COHERENCE_MASA /* Nokia: Issue 760: fixes decoder crash for some cases when all energy ratios are 1 */ #define NONBE_FIX_752_OSBA_MISCONFIG_MCT /* FhG: issue 752: misconfiguration of MCT causes crashes for coding with sampling rate under 48kHz at 256kbps*/ #define NONBE_FIX_727_MC_PARAMUPMIX_HEADROTATION /* Dlb : issue 727 : headrotation in MC paramupmix mode*/ +#define NONBE_FIX_779_ISM_FREE_REVERB_HANDLE /* VA: issue 779: fix Crash in ISM rate switching with BINAURAL_ROOM_REVERB */ #define NONBE_FIX_722_MEMORY_LEAK_IN_PARAMUPMIX /* Dlb : issue 722: memory leak fix in MC param upmix mode with BR switching*/ #define NONBE_FIX_780_ISM_STARTS_WITH_SID /* VA: issue 780: fix Crash in ISM decoding when bitstream starts with an SID and output_config is not EXT */ diff --git a/lib_rend/ivas_reverb.c b/lib_rend/ivas_reverb.c index ee00cb30c8f628808ce457b975dfbc23791bbf8f..80dc3d5b4fbdd343241aee7d80f67653520cfa41 100644 --- a/lib_rend/ivas_reverb.c +++ b/lib_rend/ivas_reverb.c @@ -1286,23 +1286,36 @@ void ivas_reverb_close( hReverb = *hReverb_in; +#ifdef NONBE_FIX_779_ISM_FREE_REVERB_HANDLE + if ( *hReverb_in == NULL || hReverb_in == NULL ) + { + return; + } + +#else if ( hReverb != NULL ) { - for ( loop_idx = 0; loop_idx < IVAS_REV_MAX_NR_BRANCHES; loop_idx++ ) +#endif + for ( loop_idx = 0; loop_idx < IVAS_REV_MAX_NR_BRANCHES; loop_idx++ ) + { + if ( hReverb->loop_delay_buffer[loop_idx] != NULL ) { - if ( hReverb->loop_delay_buffer[loop_idx] != NULL ) - { - free( hReverb->loop_delay_buffer[loop_idx] ); - hReverb->loop_delay_buffer[loop_idx] = NULL; - } + free( hReverb->loop_delay_buffer[loop_idx] ); + hReverb->loop_delay_buffer[loop_idx] = NULL; } + } - free( hReverb->pPredelay_buffer ); - hReverb->pPredelay_buffer = NULL; + free( hReverb->pPredelay_buffer ); + hReverb->pPredelay_buffer = NULL; +#ifdef NONBE_FIX_779_ISM_FREE_REVERB_HANDLE + free( *hReverb_in ); + *hReverb_in = NULL; +#else free( hReverb ); hReverb = NULL; } +#endif return; }