am 1875860d: Stopgap solution for a crash.

* commit '1875860d2606eff269381ef0bb68db549ab4819d':
  Stopgap solution for a crash.
This commit is contained in:
Jean Chalard 2013-10-22 08:11:48 -07:00 committed by Android Git Automerger
commit 42de819ae8

View file

@ -294,7 +294,14 @@ public final class RichInputConnection {
// the text field, then we can return the cached version right away. // the text field, then we can return the cached version right away.
if (cachedLength >= n || cachedLength >= mExpectedCursorPosition) { if (cachedLength >= n || cachedLength >= mExpectedCursorPosition) {
final StringBuilder s = new StringBuilder(mCommittedTextBeforeComposingText); final StringBuilder s = new StringBuilder(mCommittedTextBeforeComposingText);
s.append(mComposingText); // We call #toString() here to create a temporary object.
// In some situations, this method is called on a worker thread, and it's possible
// the main thread touches the contents of mComposingText while this worker thread
// is suspended, because mComposingText is a StringBuilder. This may lead to crashes,
// so we call #toString() on it. That will result in the return value being strictly
// speaking wrong, but since this is used for basing bigram probability off, and
// it's only going to matter for one getSuggestions call, it's fine in the practice.
s.append(mComposingText.toString());
if (s.length() > n) { if (s.length() > n) {
s.delete(0, s.length() - n); s.delete(0, s.length() - n);
} }