Fix #2267475 (NPE when changing incoming settings for EAS)
* When settings are changed, we loop through the sync error map, clearing mailboxes in the changed account that are in an error state. * It's possible that there are mailboxes referenced in the map that no longer exist. When trying to retrieve them from the provider, null is returned, but we're not checking for this case, and an NPE results. * The fix is simply to check for null, and clear the error map for the mailboxId that references a deleted mailbox Change-Id: I8c1c847090026fa1c53b09bbe6b12d864bce4df1
This commit is contained in:
parent
6b93f61eea
commit
bdb28c1644
@ -324,7 +324,10 @@ public class SyncManager extends Service implements Runnable {
|
|||||||
// If it's a login failure, look a little harder
|
// If it's a login failure, look a little harder
|
||||||
Mailbox m = Mailbox.restoreMailboxWithId(INSTANCE, mailboxId);
|
Mailbox m = Mailbox.restoreMailboxWithId(INSTANCE, mailboxId);
|
||||||
// If it's for the account whose host has changed, clear the error
|
// If it's for the account whose host has changed, clear the error
|
||||||
if (m.mAccountKey == accountId) {
|
// If the mailbox is no longer around, remove the entry in the map
|
||||||
|
if (m == null) {
|
||||||
|
INSTANCE.mSyncErrorMap.remove(mailboxId);
|
||||||
|
} else if (m.mAccountKey == accountId) {
|
||||||
error.fatal = false;
|
error.fatal = false;
|
||||||
error.holdEndTime = 0;
|
error.holdEndTime = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user