mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-07 14:58:22 +00:00
(svn r22583) -Fix [FS#4640] (r22551): Allocate _changed_storage_arrays on the heap, so the point of destruction is well defined ('never' for now).
This commit is contained in:
parent
56b7faed52
commit
f851a515cc
@ -18,14 +18,14 @@ PersistentStoragePool _persistent_storage_pool("PersistentStorage");
|
|||||||
INSTANTIATE_POOL_METHODS(PersistentStorage)
|
INSTANTIATE_POOL_METHODS(PersistentStorage)
|
||||||
|
|
||||||
/** The changed storage arrays */
|
/** 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.
|
* Remove references to use.
|
||||||
*/
|
*/
|
||||||
BaseStorageArray::~BaseStorageArray()
|
BaseStorageArray::~BaseStorageArray()
|
||||||
{
|
{
|
||||||
_changed_storage_arrays.erase(this);
|
_changed_storage_arrays->erase(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,7 +36,7 @@ BaseStorageArray::~BaseStorageArray()
|
|||||||
*/
|
*/
|
||||||
void AddChangedStorage(BaseStorageArray *storage)
|
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)
|
void ClearStorageChanges(bool keep_changes)
|
||||||
{
|
{
|
||||||
/* Loop over all changes arrays */
|
/* 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);
|
(*it)->ClearChanges(keep_changes);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* And then clear that array */
|
/* And then clear that array */
|
||||||
_changed_storage_arrays.clear();
|
_changed_storage_arrays->clear();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user