Merge "Prevent a memory leak in TextLine." into ics-mr1
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index b3df8ff..303a30e 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -102,6 +102,11 @@
         tl.mText = null;
         tl.mPaint = null;
         tl.mDirections = null;
+
+        tl.mMetricAffectingSpanSpanSet.recycle();
+        tl.mCharacterStyleSpanSet.recycle();
+        tl.mReplacementSpanSpanSet.recycle();
+
         synchronized(sCached) {
             for (int i = 0; i < sCached.length; ++i) {
                 if (sCached[i] == null) {
@@ -919,6 +924,12 @@
             }
             return limit;
         }
+
+        public void recycle() {
+            for (int i = 0; i < numberOfSpans; i++) {
+                spans[i] = null; // prevent a leak: no reference kept when TextLine is recycled
+            }
+        }
     }
 
     /**