From fdeb26a3f59a71fa72d79a29c9f12e14b86076f7 Mon Sep 17 00:00:00 2001 From: Rajat Kumar Date: Wed, 29 Jan 2020 10:14:18 +0530 Subject: [PATCH] Fix for infinite loop in impd_apply_gains_and_add function if (iEnd == iStart) is true until end line of loop, and (drc_gain_last == shape_filter_block[g].drc_gain_last) is also true, this make iEnd unchanged for ever and the while loop will go into infinite iterations. Hence added a check to break for the same. Bug:148433653 Bug:151817831 Test:poc in bug Change-Id: I2a59cde98abee0f28510a5b50ef44b3efd02c079 --- decoder/drc_src/impd_drc_process.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/decoder/drc_src/impd_drc_process.c b/decoder/drc_src/impd_drc_process.c index 8000de2..45403ac 100644 --- a/decoder/drc_src/impd_drc_process.c +++ b/decoder/drc_src/impd_drc_process.c @@ -130,6 +130,9 @@ WORD32 impd_apply_gains_and_add( impd_shape_filt_block_adapt(lpcm_gains[iEnd], &shape_filter_block[g]); } + if ((iEnd == iStart) && + (drc_gain_last == shape_filter_block[g].drc_gain_last)) + break; iStart = iEnd; } }