diff options
| author | Marc Blank <mblank@google.com> | 2012-07-23 10:14:06 -0700 |
|---|---|---|
| committer | Marc Blank <mblank@google.com> | 2012-07-23 10:17:05 -0700 |
| commit | 98497ec7f66d1c1c173abff3b8aec11451f94987 (patch) | |
| tree | c7222497414b8edc5090cdb749190699bf0074c6 /emailsync | |
| parent | 70744d63330dc4b5c51cf1b192173e72d6910779 (diff) | |
| download | android_packages_apps_Email-98497ec7f66d1c1c173abff3b8aec11451f94987.tar.gz android_packages_apps_Email-98497ec7f66d1c1c173abff3b8aec11451f94987.tar.bz2 android_packages_apps_Email-98497ec7f66d1c1c173abff3b8aec11451f94987.zip | |
Prevent ConcurrentModificationException in SyncManager
Bug: 6856652
Change-Id: I1a264844cbab159505b4b3ebd32716a469517f0a
Diffstat (limited to 'emailsync')
| -rw-r--r-- | emailsync/src/com/android/emailsync/SyncManager.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/emailsync/src/com/android/emailsync/SyncManager.java b/emailsync/src/com/android/emailsync/SyncManager.java index 7cb826ea0..0f1ed3b0c 100644 --- a/emailsync/src/com/android/emailsync/SyncManager.java +++ b/emailsync/src/com/android/emailsync/SyncManager.java @@ -1214,6 +1214,7 @@ public abstract class SyncManager extends Service implements Runnable { private void stopPing(long accountId) { // Go through our active mailboxes looking for the right one synchronized (sSyncLock) { + AbstractSyncService serviceToReset = null; for (long mailboxId: mServiceMap.keySet()) { Mailbox m = Mailbox.restoreMailboxWithId(this, mailboxId); if (m != null) { @@ -1221,11 +1222,14 @@ public abstract class SyncManager extends Service implements Runnable { if (m.mAccountKey == accountId && serverId != null && m.mType == Mailbox.TYPE_EAS_ACCOUNT_MAILBOX) { // Here's our account mailbox; reset him (stopping pings) - AbstractSyncService svc = mServiceMap.get(mailboxId); - svc.reset(); + serviceToReset = mServiceMap.get(mailboxId); + break; } } } + if (serviceToReset != null) { + serviceToReset.reset(); + } } } |
