OSDN Git Service

Clear all StaticLayout.Builder fields on pool recycle
authorRaph Levien <raph@google.com>
Wed, 6 May 2015 21:26:35 +0000 (14:26 -0700)
committerRaph Levien <raph@google.com>
Wed, 6 May 2015 21:26:35 +0000 (14:26 -0700)
When returning a StaticLayout.Builder object to the pool, it is
important to clear everything out. If not, then the object may have
stale state from a previous layout operation. This was causing CTS
test failures and probably other mischief.

Bug: 20636917
Change-Id: I76fb20076ee954fcb476131a8fbe8833d72fbc0d

core/java/android/text/StaticLayout.java

index 451abea..59c7c6d 100644 (file)
@@ -91,6 +91,7 @@ public class StaticLayout extends Layout {
             b.mEllipsizedWidth = width;
             b.mEllipsize = null;
             b.mMaxLines = Integer.MAX_VALUE;
+            b.mBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE;
 
             b.mMeasuredText = MeasuredText.obtain();
             return b;
@@ -100,6 +101,8 @@ public class StaticLayout extends Layout {
             b.mPaint = null;
             b.mText = null;
             MeasuredText.recycle(b.mMeasuredText);
+            b.mMeasuredText = null;
+            nFinishBuilder(b.mNativePtr);
             sPool.release(b);
         }