From f851a515cc30b715caad56b34fe9db7be636e951 Mon Sep 17 00:00:00 2001 From: frosch Date: Mon, 13 Jun 2011 11:53:00 +0000 Subject: [PATCH] (svn r22583) -Fix [FS#4640] (r22551): Allocate _changed_storage_arrays on the heap, so the point of destruction is well defined ('never' for now). --- src/newgrf_storage.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/newgrf_storage.cpp b/src/newgrf_storage.cpp index a4c26403d4..535a9f8fb8 100644 --- a/src/newgrf_storage.cpp +++ b/src/newgrf_storage.cpp @@ -18,14 +18,14 @@ PersistentStoragePool _persistent_storage_pool("PersistentStorage"); INSTANTIATE_POOL_METHODS(PersistentStorage) /** The changed storage arrays */ -static std::set _changed_storage_arrays; +static std::set *_changed_storage_arrays = new std::set; /** * Remove references to use. */ BaseStorageArray::~BaseStorageArray() { - _changed_storage_arrays.erase(this); + _changed_storage_arrays->erase(this); } /** @@ -36,7 +36,7 @@ BaseStorageArray::~BaseStorageArray() */ void AddChangedStorage(BaseStorageArray *storage) { - _changed_storage_arrays.insert(storage); + _changed_storage_arrays->insert(storage); } /** @@ -52,10 +52,10 @@ void AddChangedStorage(BaseStorageArray *storage) void ClearStorageChanges(bool keep_changes) { /* Loop over all changes arrays */ - for (std::set::iterator it = _changed_storage_arrays.begin(); it != _changed_storage_arrays.end(); it++) { + for (std::set::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(); }