diff options
| author | Siyamed Sinir <siyamed@google.com> | 2016-01-25 10:55:59 -0800 |
|---|---|---|
| committer | Siyamed Sinir <siyamed@google.com> | 2016-01-25 11:32:37 -0800 |
| commit | 3a789f657b98fe82bf8febb3a0be9f6d616ce81d (patch) | |
| tree | 51f5fa12e15ad5eec55734eae2ce0fdb0e7e8d7c /core/java | |
| parent | 12eef9f18ad752847d4856f1d7841b3e0d329b48 (diff) | |
SpannableStringBuilder.getSpans returns array with null values.
This CL fixes the case where SpannableStringBuilder.getSpans call
forgot to check the case where sort is false, and the span priority
is not set.
Bug: 26761571
Change-Id: I3a548b9c01768e6977a0ff15d6ecb8ca9ec3c075
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/text/SpannableStringBuilder.java | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java index e34560b80bda..787202eded02 100644 --- a/core/java/android/text/SpannableStringBuilder.java +++ b/core/java/android/text/SpannableStringBuilder.java @@ -965,10 +965,10 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable (spanStart != queryEnd && spanEnd != queryStart)) && (Object.class == kind || kind.isInstance(mSpans[i]))) { int spanPriority = mSpanFlags[i] & SPAN_PRIORITY; - if(sort) { - ret[count] = (T) mSpans[i]; - priority[count] = spanPriority; - insertionOrder[count] = mSpanOrder[i]; + int target = count; + if (sort) { + priority[target] = spanPriority; + insertionOrder[target] = mSpanOrder[i]; } else if (spanPriority != 0) { //insertion sort for elements with priority int j = 0; @@ -977,8 +977,9 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable if (spanPriority > p) break; } System.arraycopy(ret, j, ret, j + 1, count - j); - ret[j] = (T) mSpans[i]; + target = j; } + ret[target] = (T) mSpans[i]; count++; } if (count < ret.length && (i & 1) != 0) { |
