Fix inifinite loop removing folders that have disappeared

Brown paper bag misuse of BidiIterator 🙄
This commit is contained in:
Michael Gratton 2019-02-20 21:43:48 +11:00
parent 6a8f8a1594
commit 02692466cd
2 changed files with 2 additions and 4 deletions

View file

@ -1442,9 +1442,8 @@ public class GearyController : Geary.BaseObject {
Gee.BidirIterator<Geary.Folder> unavailable_iterator =
unavailable.bidir_iterator();
unavailable_iterator.last();
while (unavailable_iterator.valid) {
while (unavailable_iterator.previous()) {
Geary.Folder folder = unavailable_iterator.get();
unavailable_iterator.previous();
main_window.folder_list.remove_folder(folder);
if (folder.account == current_account) {

View file

@ -1323,9 +1323,8 @@ internal class Geary.ImapEngine.UpdateRemoteFolders : AccountOperation {
Gee.BidirIterator<MinimalFolder> removed_iterator =
removed.bidir_iterator();
removed_iterator.last();
while (removed_iterator.valid) {
while (removed_iterator.previous()) {
MinimalFolder folder = removed_iterator.get();
removed_iterator.previous();
try {
debug("Locally deleting removed folder %s", folder.to_string());