summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorSiyamed Sinir <siyamed@google.com>2016-06-08 00:46:27 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-06-08 00:46:28 +0000
commit96c3e5504bc68147177a04e88aa64042a44d89f7 (patch)
treee0021992b5f32bfb5877cb0e3457a1a401180f83 /core/java
parentc82a2b5358936098a91cd95f9d9638607f9d7dfc (diff)
parenteb4df8a82281ee9b2490eebc3c2eef8d669deb87 (diff)
Merge "Fix int overflow in SpannableStringBuilder.replace" into nyc-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/text/SpannableStringBuilder.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java
index 787202eded02..dc8e4b93e093 100644
--- a/core/java/android/text/SpannableStringBuilder.java
+++ b/core/java/android/text/SpannableStringBuilder.java
@@ -19,7 +19,6 @@ package android.text;
import android.annotation.Nullable;
import android.graphics.Canvas;
import android.graphics.Paint;
-import android.text.style.ParagraphStyle;
import android.util.Log;
import com.android.internal.util.ArrayUtils;
@@ -554,7 +553,8 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable
if (adjustSelection) {
boolean changed = false;
if (selectionStart > start && selectionStart < end) {
- final int offset = (selectionStart - start) * newLen / origLen;
+ final long diff = selectionStart - start;
+ final int offset = Math.toIntExact(diff * newLen / origLen);
selectionStart = start + offset;
changed = true;
@@ -562,7 +562,8 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable
Spanned.SPAN_POINT_POINT);
}
if (selectionEnd > start && selectionEnd < end) {
- final int offset = (selectionEnd - start) * newLen / origLen;
+ final long diff = selectionEnd - start;
+ final int offset = Math.toIntExact(diff * newLen / origLen);
selectionEnd = start + offset;
changed = true;