From 3a789f657b98fe82bf8febb3a0be9f6d616ce81d Mon Sep 17 00:00:00 2001 From: Siyamed Sinir Date: Mon, 25 Jan 2016 10:55:59 -0800 Subject: [PATCH] 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 --- core/java/android/text/SpannableStringBuilder.java | 11 ++++++----- 1 file 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) { -- 2.11.0