ensure clients are valid when iterated over

This commit is contained in:
Lion Kortlepel committed 2022-11-23 09:34:51 +01:00
1 parent 8551e68184
commit 2572530957
1 file changed
+8
+8
View File
@@ -51,10 +51,14 @@ public:
Clients = mClients; Clients = mClients;
} }
for (auto& Client : Clients) { for (auto& Client : Clients) {
if (Client) [[likely]] {
IterationDecision Decision = std::invoke(Fn, Client); IterationDecision Decision = std::invoke(Fn, Client);
if (Decision == IterationDecision::Break) { if (Decision == IterationDecision::Break) {
break; break;
} }
} else {
beammp_assert_not_reachable();
}
} }
} }
template <ForEachHandler FnT> template <ForEachHandler FnT>
@@ -65,7 +69,11 @@ public:
Clients = mClients; Clients = mClients;
} }
for (auto& Client : Clients) { for (auto& Client : Clients) {
if (Client) [[likely]] {
std::invoke(Fn, Client); std::invoke(Fn, Client);
} else {
beammp_assert_not_reachable();
}
} }
} }
size_t ClientCount() const; size_t ClientCount() const;