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

Commit 7755b065 authored by Lyn's avatar Lyn
Browse files

Fix undefined behavior iterating over waiting keys

Bug: 331192804
Test: manual
Change-Id: Iab1b82e11fa505ac00f7d875893dfef9302da14e
parent c0ecb0a9
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -254,10 +254,15 @@ public abstract class BaseHeadsUpManager implements HeadsUpManager {
        // 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.
        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) {
            removeEntry(key);
        }
        for (String key : mAvalancheController.getWaitingKeys()) {
        for (String key : waitingKeysToRemove) {
            removeEntry(key);
        }
    }