diff options
author | SmallJoker <SmallJoker@users.noreply.github.com> | 2019-09-24 19:05:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-24 19:05:28 +0200 |
commit | 26b39f1eae1f576669cbf49c6db94ef4ed8624df (patch) | |
tree | dd0a508d4d6987f2c667cbf342955f64ebbd02af /src/server.cpp | |
parent | d77ea764768f5cde9e8f0781356a67d723aa7609 (diff) | |
download | minetest-26b39f1eae1f576669cbf49c6db94ef4ed8624df.tar.gz minetest-26b39f1eae1f576669cbf49c6db94ef4ed8624df.tar.bz2 minetest-26b39f1eae1f576669cbf49c6db94ef4ed8624df.zip |
Fix some reference counters (memleak) (#8981)
Fix some reference counters (memleak)
Map::dispatchEvent: Allocation safety using references
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/server.cpp b/src/server.cpp index c0ed02b9f..0e677199a 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -306,6 +306,11 @@ Server::~Server() for (auto &detached_inventory : m_detached_inventories) { delete detached_inventory.second; } + + while (!m_unsent_map_edit_queue.empty()) { + delete m_unsent_map_edit_queue.front(); + m_unsent_map_edit_queue.pop(); + } } void Server::init() @@ -1090,12 +1095,12 @@ void Server::setTimeOfDay(u32 time) m_time_of_day_send_timer = 0; } -void Server::onMapEditEvent(MapEditEvent *event) +void Server::onMapEditEvent(const MapEditEvent &event) { - if (m_ignore_map_edit_events_area.contains(event->getArea())) + if (m_ignore_map_edit_events_area.contains(event.getArea())) return; - MapEditEvent *e = event->clone(); - m_unsent_map_edit_queue.push(e); + + m_unsent_map_edit_queue.push(new MapEditEvent(event)); } Inventory* Server::getInventory(const InventoryLocation &loc) @@ -1160,7 +1165,7 @@ void Server::setInventoryModified(const InventoryLocation &loc) MapEditEvent event; event.type = MEET_BLOCK_NODE_METADATA_CHANGED; event.p = loc.p; - m_env->getMap().dispatchEvent(&event); + m_env->getMap().dispatchEvent(event); } break; case InventoryLocation::DETACHED: |