Clear all StaticLayout.Builder fields on pool recycle

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
This commit is contained in:
Raph Levien
2015-05-06 14:26:35 -07:00
parent cf1f2ea5a7
commit 3bd60c7b11

View 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);
}