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:
parent
b6bd774a06
commit
d6eaf6e1f9
@ -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;
|
||||
|
||||
|
@ -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() );
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user