Mercurial > hg > openttd
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(); }