summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/newgrf_storage.cpp8
-rw-r--r--src/newgrf_storage.h3
2 files changed, 9 insertions, 2 deletions
diff --git a/src/newgrf_storage.cpp b/src/newgrf_storage.cpp
index 27a806ab1..c1c736e20 100644
--- a/src/newgrf_storage.cpp
+++ b/src/newgrf_storage.cpp
@@ -17,6 +17,14 @@
static std::set<BaseStorageArray*> _changed_storage_arrays;
/**
+ * Remove references to use.
+ */
+BaseStorageArray::~BaseStorageArray()
+{
+ _changed_storage_arrays.erase(this);
+}
+
+/**
* Add the changed storage array to the list of changed arrays.
* This is done so we only have to revert/save the changed
* arrays, which saves quite a few clears, etc. after callbacks.
diff --git a/src/newgrf_storage.h b/src/newgrf_storage.h
index a85bbbde6..f03308509 100644
--- a/src/newgrf_storage.h
+++ b/src/newgrf_storage.h
@@ -20,8 +20,7 @@
*/
struct BaseStorageArray
{
- /** The needed destructor */
- virtual ~BaseStorageArray() {}
+ virtual ~BaseStorageArray();
/**
* Clear the changes made since the last ClearChanges.