changeset 17798:4581fc7adab8 draft

(svn r22583) -Fix [FS#4640] (r22551): Allocate _changed_storage_arrays on the heap, so the point of destruction is well defined ('never' for now).
author frosch <frosch@openttd.org>
date Mon, 13 Jun 2011 11:53:00 +0000
parents e62973043805
children 2dbb9286ae7a
files src/newgrf_storage.cpp
diffstat 1 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_storage.cpp
+++ b/src/newgrf_storage.cpp
@@ -18,14 +18,14 @@
 INSTANTIATE_POOL_METHODS(PersistentStorage)
 
 /** The changed storage arrays */
-static std::set<BaseStorageArray*> _changed_storage_arrays;
+static std::set<BaseStorageArray*> *_changed_storage_arrays = new std::set<BaseStorageArray*>;
 
 /**
  * Remove references to use.
  */
 BaseStorageArray::~BaseStorageArray()
 {
-	_changed_storage_arrays.erase(this);
+	_changed_storage_arrays->erase(this);
 }
 
 /**
@@ -36,7 +36,7 @@
  */
 void AddChangedStorage(BaseStorageArray *storage)
 {
-	_changed_storage_arrays.insert(storage);
+	_changed_storage_arrays->insert(storage);
 }
 
 /**
@@ -52,10 +52,10 @@
 void ClearStorageChanges(bool keep_changes)
 {
 	/* Loop over all changes arrays */
-	for (std::set<BaseStorageArray*>::iterator it = _changed_storage_arrays.begin(); it != _changed_storage_arrays.end(); it++) {
+	for (std::set<BaseStorageArray*>::iterator it = _changed_storage_arrays->begin(); it != _changed_storage_arrays->end(); it++) {
 		(*it)->ClearChanges(keep_changes);
 	}
 
 	/* And then clear that array */
-	_changed_storage_arrays.clear();
+	_changed_storage_arrays->clear();
 }