Bug 1251740 - Remove ArrayList item using iterator instead of from list when iterating r=sebastian
Otherwise we will crash with a java.util.ConcurrentModificationException on iterator.next()
after removing an item using list.remove(item).
MozReview-Commit-ID: KYebSw2zjVk
--- a/mobile/android/base/java/org/mozilla/gecko/home/SearchEngineRow.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/SearchEngineRow.java
@@ -395,17 +395,17 @@ class SearchEngineRow extends AnimatedHe
List<String> searchHistorySuggestions = (rawSearchHistorySuggestions != null) ? rawSearchHistorySuggestions : new ArrayList<String>();
// Filter out URLs and long search suggestions
Iterator<String> searchHistoryIterator = searchHistorySuggestions.iterator();
while (searchHistoryIterator.hasNext()) {
final String currentSearchHistory = searchHistoryIterator.next();
if (currentSearchHistory.length() > 50 || Pattern.matches("^(https?|ftp|file)://.*", currentSearchHistory)) {
- searchHistorySuggestions.remove(currentSearchHistory);
+ searchHistoryIterator.remove();
}
}
List<String> searchEngineSuggestions = new ArrayList<String>();
for (String suggestion : searchEngine.getSuggestions()) {
searchHistorySuggestions.remove(suggestion);
searchEngineSuggestions.add(suggestion);