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

Commit bf3c3f2a authored by Alex Sakhartchouk's avatar Alex Sakhartchouk
Browse files

Fix an incorrect assert that doesn't account for element array size.

Change-Id: Ibcb5c55d91967603391a1721137d010a85025990
parent bbf1bc8b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -487,6 +487,7 @@ public class Allocation extends BaseObj {

        final byte[] data = fp.getData();
        int eSize = mType.mElement.mElements[component_number].getSizeBytes();
        eSize *= mType.mElement.mArraySizes[component_number];

        if (data.length != eSize) {
            throw new RSIllegalArgumentException("Field packer sizelength " + data.length +
+4 −3
Original line number Diff line number Diff line
@@ -124,7 +124,8 @@ void Allocation::elementData(Context *rsc, uint32_t x, const void *data,
    }

    const Element * e = mHal.state.type->getElement()->getField(cIdx);
    if (sizeBytes != e->getSizeBytes()) {
    uint32_t elemArraySize = mHal.state.type->getElement()->getFieldArraySize(cIdx);
    if (sizeBytes != e->getSizeBytes() * elemArraySize) {
        ALOGE("Error Allocation::subElementData data size %zu does not match field size %zu.", sizeBytes, e->getSizeBytes());
        rsc->setError(RS_ERROR_BAD_VALUE, "subElementData bad size.");
        return;
@@ -157,8 +158,8 @@ void Allocation::elementData(Context *rsc, uint32_t x, uint32_t y,
    }

    const Element * e = mHal.state.type->getElement()->getField(cIdx);

    if (sizeBytes != e->getSizeBytes()) {
    uint32_t elemArraySize = mHal.state.type->getElement()->getFieldArraySize(cIdx);
    if (sizeBytes != e->getSizeBytes() * elemArraySize) {
        ALOGE("Error Allocation::subElementData data size %zu does not match field size %zu.", sizeBytes, e->getSizeBytes());
        rsc->setError(RS_ERROR_BAD_VALUE, "subElementData bad size.");
        return;