From 1bc7f6c7416ad32dc87f74da215b649464caeb93 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 5 Nov 2022 09:28:12 +0100 Subject: [PATCH] Purge: fixed concurrent modification (2) --- app/src/main/java/eu/faircode/email/Core.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 173ac301e8..b3cbef8da9 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2906,19 +2906,23 @@ class Core { int chunk_size = prefs.getInt("chunk_size", DEFAULT_CHUNK_SIZE); Flags flags = new Flags(Flags.Flag.DELETED); + List iremove = new ArrayList<>(); for (List list : Helper.chunkList(idelete, chunk_size)) try { ifolder.setFlags(list.toArray(new Message[0]), flags, true); } catch (MessagingException ex) { Log.w(ex); - for (Message imessage : new ArrayList<>(list)) + for (Message imessage : list) try { imessage.setFlag(Flags.Flag.DELETED, true); } catch (MessagingException mex) { Log.w(mex); - idelete.remove(imessage); + iremove.add(imessage); } } + + for (Message imessage : iremove) + idelete.remove(imessage); } Log.i(folder.name + " purge deleted"); expunge(context, ifolder, idelete);