Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbfe962f authored by James O'Leary's avatar James O'Leary
Browse files

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
parent f98091f2
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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);