Invalid addresses were being removed from a list while iterating through it, causing a
ConcurrentModificationException. Changed the loop to use an explicit iterator and do
removals through that iterator.
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.TimeZone;
import java.util.LinkedHashSet;
import java.util.TimeZone;
// validate the emails, out of paranoia. they should already be
// validated on input, but drop any invalid emails just to be safe.
// validate the emails, out of paranoia. they should already be
// validated on input, but drop any invalid emails just to be safe.
- for (Rfc822Token address : addresses) {
+ Iterator<Rfc822Token> addressIterator = addresses.iterator();
+ while (addressIterator.hasNext()) {
+ Rfc822Token address = addressIterator.next();
if (!mEmailValidator.isValid(address.getAddress())) {
Log.w(TAG, "Dropping invalid attendee email address: " + address);
if (!mEmailValidator.isValid(address.getAddress())) {
Log.w(TAG, "Dropping invalid attendee email address: " + address);
- addresses.remove(address);
+ addressIterator.remove();