From 02fd27972471accb709023f3988ef1472b6cd0d3 Mon Sep 17 00:00:00 2001 From: rago Date: Tue, 5 Sep 2017 12:53:39 -0700 Subject: [PATCH] Fix Auxiliary Effect Buffer Corruption Output buffer is shared with temp buffer. Conversion should go low to high indexes in array to avoid corruption. Bug: 65375387 Test: Manual testing with SoloTester app. Change-Id: I1b96e6c625d2b0a857f029e493b5fcb22bf02ece --- media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp index 1717b497ef..ee9406dfd0 100644 --- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp +++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp @@ -429,9 +429,7 @@ static void FloatToInt16_SAT(const LVM_FLOAT *src, LVM_INT16 *dst, size_t n) { size_t ii; LVM_INT32 temp; - src += n-1; - dst += n-1; - for (ii = n; ii != 0; ii--) { + for (ii = 0; ii < n; ii++) { temp = (LVM_INT32)((*src) * 32768.0f); if (temp >= 32767) { *dst = 32767; @@ -440,8 +438,8 @@ static void FloatToInt16_SAT(const LVM_FLOAT *src, LVM_INT16 *dst, size_t n) { } else { *dst = (LVM_INT16)temp; } - src--; - dst--; + src++; + dst++; } return; } -- 2.11.0