summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author Daniele Di Proietto <ddiproietto@google.com> 2023-11-13 10:26:14 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-11-13 10:26:14 +0000
commit0b6d2dc51c62d0697e943eb74f46ca27830fdf01 (patch)
tree96f4e09c90a880f2a31bf3dc6a82a527be8ca56f /libs
parent636593c1013de10958d6844b26bc7816c19cb457 (diff)
parent42e79138c0bfb0ac31bed572c3cedaab18e6e6f8 (diff)
Merge "FenceTime: Fix undefined behavior" into main
Diffstat (limited to 'libs')
-rw-r--r--libs/ui/FenceTime.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/libs/ui/FenceTime.cpp b/libs/ui/FenceTime.cpp
index 538c1d2a42..4246c40f64 100644
--- a/libs/ui/FenceTime.cpp
+++ b/libs/ui/FenceTime.cpp
@@ -363,9 +363,9 @@ void FenceToFenceTimeMap::signalAllForTest(
}
void FenceToFenceTimeMap::garbageCollectLocked() {
- for (auto& it : mMap) {
+ for (auto it = mMap.begin(); it != mMap.end();) {
// Erase all expired weak pointers from the vector.
- auto& vect = it.second;
+ auto& vect = it->second;
vect.erase(
std::remove_if(vect.begin(), vect.end(),
[](const std::weak_ptr<FenceTime>& ft) {
@@ -375,7 +375,9 @@ void FenceToFenceTimeMap::garbageCollectLocked() {
// Also erase the map entry if the vector is now empty.
if (vect.empty()) {
- mMap.erase(it.first);
+ it = mMap.erase(it);
+ } else {
+ it++;
}
}
}