Limit check on maxChannels for SoundPool.
Bug 1838724
diff --git a/media/jni/soundpool/SoundPool.cpp b/media/jni/soundpool/SoundPool.cpp
index 0812650..ce80f92 100644
--- a/media/jni/soundpool/SoundPool.cpp
+++ b/media/jni/soundpool/SoundPool.cpp
@@ -44,23 +44,27 @@
LOGV("SoundPool constructor: maxChannels=%d, streamType=%d, srcQuality=%d",
maxChannels, streamType, srcQuality);
- if (maxChannels > 32) {
- LOGW("App requested %d channels, capped at 32", maxChannels);
- maxChannels = 32;
+ // check limits
+ mMaxChannels = maxChannels;
+ if (mMaxChannels < 1) {
+ mMaxChannels = 1;
}
+ else if (mMaxChannels > 32) {
+ mMaxChannels = 32;
+ }
+ LOGW_IF(maxChannels != mMaxChannels, "App requested %d channels", maxChannels);
mQuit = false;
mSoundPoolRef = soundPoolRef;
mDecodeThread = 0;
- mMaxChannels = maxChannels;
mStreamType = streamType;
mSrcQuality = srcQuality;
mAllocated = 0;
mNextSampleID = 0;
mNextChannelID = 0;
- mChannelPool = new SoundChannel[maxChannels];
- for (int i = 0; i < maxChannels; ++i) {
+ mChannelPool = new SoundChannel[mMaxChannels];
+ for (int i = 0; i < mMaxChannels; ++i) {
mChannelPool[i].init(this);
mChannels.push_back(&mChannelPool[i]);
}