Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17f58aa6 authored by Lyn Han's avatar Lyn Han Committed by Android (Google) Code Review
Browse files

Merge "Fix undefined behavior iterating over waiting keys" into main

parents ca0c6dc5 7755b065
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -256,10 +256,15 @@ public abstract class BaseHeadsUpManager implements HeadsUpManager {
        // A copy is necessary here as we are changing the underlying map.  This would cause
        // A copy is necessary here as we are changing the underlying map.  This would cause
        // undefined behavior if we iterated over the key set directly.
        // undefined behavior if we iterated over the key set directly.
        ArraySet<String> keysToRemove = new ArraySet<>(mHeadsUpEntryMap.keySet());
        ArraySet<String> keysToRemove = new ArraySet<>(mHeadsUpEntryMap.keySet());

        // Must get waiting keys before calling removeEntry, which clears waiting entries in
        // AvalancheController
        List<String> waitingKeysToRemove = mAvalancheController.getWaitingKeys();

        for (String key : keysToRemove) {
        for (String key : keysToRemove) {
            removeEntry(key);
            removeEntry(key);
        }
        }
        for (String key : mAvalancheController.getWaitingKeys()) {
        for (String key : waitingKeysToRemove) {
            removeEntry(key);
            removeEntry(key);
        }
        }
    }
    }