diff options
author | Keisuke Kuroyanagi <ksk@google.com> | 2015-06-11 22:44:52 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-11 22:44:55 +0000 |
commit | 4039f6570cff0013d3986b522d43e6eab7cc28a6 (patch) | |
tree | 71abef879a4a45e26e0747efea37e7ed7c1f2861 /graphics/java | |
parent | 421eaa7813e33ea1bbce398e5940e6ab477c759d (diff) | |
parent | f2122ef549dd73f68bdbe4d6767f6516935024d0 (diff) | |
download | frameworks_base-4039f6570cff0013d3986b522d43e6eab7cc28a6.zip frameworks_base-4039f6570cff0013d3986b522d43e6eab7cc28a6.tar.gz frameworks_base-4039f6570cff0013d3986b522d43e6eab7cc28a6.tar.bz2 |
Merge "Improve boundary check for for Paint#DrawTextRun." into mnc-dev
Diffstat (limited to 'graphics/java')
-rw-r--r-- | graphics/java/android/graphics/Canvas.java | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java index 392a5b6..7386637 100644 --- a/graphics/java/android/graphics/Canvas.java +++ b/graphics/java/android/graphics/Canvas.java @@ -1728,8 +1728,7 @@ public class Canvas { * @param contextIndex the start of the context for shaping. Must be * no greater than index. * @param contextCount the number of characters in the context for shaping. - * contexIndex + contextCount must be no less than index - * + count. + * contexIndex + contextCount must be no less than index + count. * @param x the x position at which to draw the text * @param y the y position at which to draw the text * @param isRtl whether the run is in RTL direction @@ -1744,12 +1743,14 @@ public class Canvas { if (paint == null) { throw new NullPointerException("paint is null"); } - if ((index | count | text.length - index - count) < 0) { + if ((index | count | contextIndex | contextCount | index - contextIndex + | (contextIndex + contextCount) - (index + count) + | text.length - (contextIndex + contextCount)) < 0) { throw new IndexOutOfBoundsException(); } - native_drawTextRun(mNativeCanvasWrapper, text, index, count, - contextIndex, contextCount, x, y, isRtl, paint.getNativeInstance(), paint.mNativeTypeface); + native_drawTextRun(mNativeCanvasWrapper, text, index, count, contextIndex, contextCount, + x, y, isRtl, paint.getNativeInstance(), paint.mNativeTypeface); } /** @@ -1796,14 +1797,15 @@ public class Canvas { if (paint == null) { throw new NullPointerException("paint is null"); } - if ((start | end | end - start | text.length() - end) < 0) { + if ((start | end | contextStart | contextEnd | start - contextStart | end - start + | contextEnd - end | text.length() - contextEnd) < 0) { throw new IndexOutOfBoundsException(); } if (text instanceof String || text instanceof SpannedString || text instanceof SpannableString) { - native_drawTextRun(mNativeCanvasWrapper, text.toString(), start, end, - contextStart, contextEnd, x, y, isRtl, paint.getNativeInstance(), paint.mNativeTypeface); + native_drawTextRun(mNativeCanvasWrapper, text.toString(), start, end, contextStart, + contextEnd, x, y, isRtl, paint.getNativeInstance(), paint.mNativeTypeface); } else if (text instanceof GraphicsOperations) { ((GraphicsOperations) text).drawTextRun(this, start, end, contextStart, contextEnd, x, y, isRtl, paint); |