From 44f5d3f1125bf699afd23deb4e327ffae560f10a Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Sat, 11 Jul 2020 01:11:37 +0000 Subject: [PATCH] Fix arguments capture in SoundEffectsHelper The handler created for an async call must capture arguments of the Message by value instead of capturing the instance of Message by reference. Since Message objects are pooled for efficiency, a possibility exists that the instance of Message is reused later. Bug: 160315111 Bug: 160965418 Test: atest android.media.cts.AudioManagerTest Change-Id: I2c81b8fa9ae6653da2e6812668395d8fcd6bc6e9 Merged-In: I2c81b8fa9ae6653da2e6812668395d8fcd6bc6e9 (cherry picked from commit f8819552bbc46fd73bc0605ce1fb1b120bac2fa0) --- .../core/java/com/android/server/audio/SoundEffectsHelper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/audio/SoundEffectsHelper.java b/services/core/java/com/android/server/audio/SoundEffectsHelper.java index 6d29b0e0078c9..762f4d7dcab85 100644 --- a/services/core/java/com/android/server/audio/SoundEffectsHelper.java +++ b/services/core/java/com/android/server/audio/SoundEffectsHelper.java @@ -436,11 +436,12 @@ class SoundEffectsHelper { onUnloadSoundEffects(); break; case MSG_PLAY_EFFECT: + final int effect = msg.arg1, volume = msg.arg2; onLoadSoundEffects(new OnEffectsLoadCompleteHandler() { @Override public void run(boolean success) { if (success) { - onPlaySoundEffect(msg.arg1 /*effect*/, msg.arg2 /*volume*/); + onPlaySoundEffect(effect, volume); } } });