1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-15 15:02:34 +02:00

Fix double free crash in delayed object deletion

This commit is contained in:
Daniel Evans 2015-05-02 20:37:20 +01:00
parent b6bd774a06
commit d6eaf6e1f9
2 changed files with 4 additions and 5 deletions

View File

@ -34,7 +34,6 @@ struct WeaponScan;
#include <vector>
#include <set>
#include <queue>
#include <random>
#include <array>
@ -287,7 +286,7 @@ private:
/**
* @brief Used by objects to delete themselves during updates.
*/
std::queue<GameObject*> deletionQueue;
std::set<GameObject*> deletionQueue;
std::vector<AreaIndicatorInfo> areaIndicators;

View File

@ -457,14 +457,14 @@ void GameWorld::destroyObject(GameObject* object)
void GameWorld::destroyObjectQueued(GameObject *object)
{
deletionQueue.push(object);
deletionQueue.insert(object);
}
void GameWorld::destroyQueuedObjects()
{
while( !deletionQueue.empty() ) {
destroyObject( deletionQueue.front() );
deletionQueue.pop();
destroyObject( *deletionQueue.begin() );
deletionQueue.erase( deletionQueue.begin() );
}
}