summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/generic/db.hpp4
-rw-r--r--src/map/npc.cpp10
2 files changed, 7 insertions, 7 deletions
diff --git a/src/generic/db.hpp b/src/generic/db.hpp
index 04ead79..d610f32 100644
--- a/src/generic/db.hpp
+++ b/src/generic/db.hpp
@@ -78,6 +78,10 @@ public:
{
return borrow(impl[k]);
}
+ void erase_if(std::function<bool(const std::pair<K, V>&)> predicate)
+ {
+ std::erase_if(impl, predicate);
+ }
void erase(const K& k)
{
impl.erase(k);
diff --git a/src/map/npc.cpp b/src/map/npc.cpp
index efb2ba3..76f0e14 100644
--- a/src/map/npc.cpp
+++ b/src/map/npc.cpp
@@ -1053,13 +1053,9 @@ void npc_free_internal(dumb_ptr<npc_data> nd_)
// Also clean up any events we registered to the global ev_db
if (auto nd = nd_->is_script())
{
- for (auto& pair : ev_db)
- {
- if (pair.second.nd == nd)
- {
- ev_db.erase(pair.first);
- }
- }
+ ev_db.erase_if([&](auto& pair) {
+ return pair.second.nd == nd;
+ });
}
nd_.delete_();