Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b94a7fb3 authored by satok's avatar satok Committed by Android (Google) Code Review
Browse files

Merge "Fix ConcurrentModificationException in TextServicesManagerService" into ics-mr1

parents d8ec8db5 4c3fa642
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -392,9 +392,16 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
            Slog.d(TAG, "FinishSpellCheckerService");
        }
        synchronized(mSpellCheckerMap) {
            final ArrayList<SpellCheckerBindGroup> removeList =
                    new ArrayList<SpellCheckerBindGroup>();
            for (SpellCheckerBindGroup group : mSpellCheckerBindGroups.values()) {
                if (group == null) continue;
                group.removeListener(listener);
                // Use removeList to avoid modifying mSpellCheckerBindGroups in this loop.
                removeList.add(group);
            }
            final int removeSize = removeList.size();
            for (int i = 0; i < removeSize; ++i) {
                removeList.get(i).removeListener(listener);
            }
        }
    }
@@ -669,6 +676,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
            }
        }

        // cleanLocked may remove elements from mSpellCheckerBindGroups
        private void cleanLocked() {
            if (DBG) {
                Slog.d(TAG, "cleanLocked");