am 0d3a5e4c: am 67d54ac0: Merge "NPE in GMail / TextLine" into ics-mr1
* commit '0d3a5e4cbddc9a6a0a551698b5152c815842952a':
NPE in GMail / TextLine
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 303a30e..1e8a2f7 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -886,7 +886,7 @@
spanFlags = new int[length];
}
- int count = 0;
+ numberOfSpans = 0;
for (int i = 0; i < length; i++) {
final E span = allSpans[i];
@@ -896,14 +896,13 @@
final int spanFlag = spanned.getSpanFlags(span);
- spans[i] = span;
- spanStarts[i] = spanStart;
- spanEnds[i] = spanEnd;
- spanFlags[i] = spanFlag;
+ spans[numberOfSpans] = span;
+ spanStarts[numberOfSpans] = spanStart;
+ spanEnds[numberOfSpans] = spanEnd;
+ spanFlags[numberOfSpans] = spanFlag;
- count++;
+ numberOfSpans++;
}
- numberOfSpans = count;
}
public boolean hasSpansIntersecting(int start, int end) {
@@ -926,6 +925,7 @@
}
public void recycle() {
+ // The spans array is guaranteed to be not null when numberOfSpans is > 0
for (int i = 0; i < numberOfSpans; i++) {
spans[i] = null; // prevent a leak: no reference kept when TextLine is recycled
}