diff options
| author | 2015-01-15 11:09:23 -0800 | |
|---|---|---|
| committer | 2015-01-21 21:17:19 +0000 | |
| commit | b590b354ef407c1c60288d2f8c3950d2f53d14fa (patch) | |
| tree | ce0d11c926f03e6f0b23cb18ebf7f50af1e87e10 | |
| parent | 298071951210ae23c8023c4dc8f82da5d1760211 (diff) | |
[Renderscript] Add check for Allocation.copyTo(Array) and
Fix the input allocation type check for Histogram Intrinsic.
Bug: 19035242
Change-Id: I0ef2672bf816854db90fc92dc9ef51d1d231c246
| -rw-r--r-- | rs/java/android/renderscript/Allocation.java | 4 | ||||
| -rw-r--r-- | rs/java/android/renderscript/ScriptIntrinsicHistogram.java | 12 |
2 files changed, 10 insertions, 6 deletions
diff --git a/rs/java/android/renderscript/Allocation.java b/rs/java/android/renderscript/Allocation.java index 3cda6de14ff5..4e895669653e 100644 --- a/rs/java/android/renderscript/Allocation.java +++ b/rs/java/android/renderscript/Allocation.java @@ -1262,6 +1262,10 @@ public class Allocation extends BaseObj { private void copyTo(Object array, Element.DataType dt, int arrayLen) { Trace.traceBegin(RenderScript.TRACE_TAG, "copyTo"); + if (dt.mSize * arrayLen < mSize) { + throw new RSIllegalArgumentException( + "Size of output array cannot be smaller than size of allocation."); + } mRS.validate(); mRS.nAllocationRead(getID(mRS), array, dt); Trace.traceEnd(RenderScript.TRACE_TAG); diff --git a/rs/java/android/renderscript/ScriptIntrinsicHistogram.java b/rs/java/android/renderscript/ScriptIntrinsicHistogram.java index 95b610a1b5e9..4ecac99bea3c 100644 --- a/rs/java/android/renderscript/ScriptIntrinsicHistogram.java +++ b/rs/java/android/renderscript/ScriptIntrinsicHistogram.java @@ -91,9 +91,9 @@ public final class ScriptIntrinsicHistogram extends ScriptIntrinsic { throw new RSIllegalArgumentException( "Input vector size must be >= output vector size."); } - if (ain.getType().getElement().isCompatible(Element.U8(mRS)) && - ain.getType().getElement().isCompatible(Element.U8_4(mRS))) { - throw new RSIllegalArgumentException("Output type must be U32 or I32."); + if (!ain.getType().getElement().isCompatible(Element.U8(mRS)) && + !ain.getType().getElement().isCompatible(Element.U8_4(mRS))) { + throw new RSIllegalArgumentException("Input type must be U8 or U8_4."); } forEach(0, ain, null, null, opt); @@ -187,9 +187,9 @@ public final class ScriptIntrinsicHistogram extends ScriptIntrinsic { if (mOut.getType().getElement().getVectorSize() != 1) { throw new RSIllegalArgumentException("Output vector size must be one."); } - if (ain.getType().getElement().isCompatible(Element.U8(mRS)) && - ain.getType().getElement().isCompatible(Element.U8_4(mRS))) { - throw new RSIllegalArgumentException("Output type must be U32 or I32."); + if (!ain.getType().getElement().isCompatible(Element.U8(mRS)) && + !ain.getType().getElement().isCompatible(Element.U8_4(mRS))) { + throw new RSIllegalArgumentException("Input type must be U8 or U8_4."); } forEach(1, ain, null, null, opt); |