Make sure no memory leaks

This commit is contained in:
2024-05-11 09:25:57 -04:00
parent e89404abda
commit 25f522c539
@@ -334,12 +334,25 @@ public enum BuildingManager {
NPC hirelingNPC = (NPC) hireling; NPC hirelingNPC = (NPC) hireling;
if (ForgeManager.vendorWorkOrderLookup.get(hirelingNPC) != null) if (ForgeManager.vendorWorkOrderLookup.get(hirelingNPC) != null)
for (WorkOrder workOrder : ForgeManager.vendorWorkOrderLookup.get(hirelingNPC)) { for (WorkOrder workOrder : ForgeManager.vendorWorkOrderLookup.get(hirelingNPC)) {
workOrder.runCompleted.set(true); workOrder.runCompleted.set(true);
workOrder.vendor = null; workOrder.vendor = null;
// Remove any cooking items from collections
// to ensure we don't leak memory.
for (Item item : workOrder.cooking)
ForgeManager.itemWorkOrderLookup.remove(item);
DbManager.WarehouseQueries.DELETE_WORKORDER(workOrder); DbManager.WarehouseQueries.DELETE_WORKORDER(workOrder);
} }
// Finally remove the NPC from ForgeManager
ForgeManager.vendorWorkOrderLookup.remove(hirelingNPC);
} }
// Remove hireling from building // Remove hireling from building
building.getHirelings().remove(hireling); building.getHirelings().remove(hireling);