Fix crash when number of pixels < max colors
If extraction is run on a set of pixels whose count is less than the number of max colors, then colors.length < max colors, and accesses to colors[index] inside the for loop throw an ArrayOutOfBoundsException. Test: add widget to home screen, reduce size of widget to small area. observe crash. `mp core services` with fix, observe that crash no longer occurs. `mp core services` again without fix, verify crash occurs after boot. Fixes: 181130209 Change-Id: I60bf1ab39f7a69f2fb0745049fd46d2f0b53a12c
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.internal.graphics.palette;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -120,7 +119,11 @@ public class WuQuantizer implements Quantizer {
|
||||
}
|
||||
}
|
||||
|
||||
for (k = 0; k < mMaxColors; ++k) {
|
||||
// If extraction is run on a set of pixels whose count is less than the
|
||||
// number of max colors, then colors.length < max colors, and accesses
|
||||
// to colors[index] inside the for loop throw an ArrayOutOfBoundsException.
|
||||
int numColorsToCreate = (int) Math.min(mMaxColors, colors.length);
|
||||
for (k = 0; k < numColorsToCreate; ++k) {
|
||||
weight = getVolume(cube[k], mWt);
|
||||
if (weight > 0) {
|
||||
red = (int) (getVolume(cube[k], mMr) / weight);
|
||||
|
||||
Reference in New Issue
Block a user