From 6bab66f3651b44d33830f75c8836f0872d2b0676 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Thu, 13 Feb 2025 18:00:11 +0100 Subject: Fixed issue in ParticleContainer destructor It was trying to call a virtual method for cleanup with the intention of doing cleanup in its subclasses, but that doesn't work in a destructor. Could simplify ActorSprite destructor as a result. --- src/actorsprite.cpp | 4 ---- src/particlecontainer.cpp | 11 ++++++++--- src/particlecontainer.h | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/actorsprite.cpp b/src/actorsprite.cpp index 989de8d9..ae731305 100644 --- a/src/actorsprite.cpp +++ b/src/actorsprite.cpp @@ -52,10 +52,6 @@ ActorSprite::ActorSprite(int id): ActorSprite::~ActorSprite() { - setMap(nullptr); - - mUsedTargetCursor = nullptr; - // Notify listeners of the destruction. Event event(Event::Destroyed); event.setActor("source", this); diff --git a/src/particlecontainer.cpp b/src/particlecontainer.cpp index 60485c44..53742109 100644 --- a/src/particlecontainer.cpp +++ b/src/particlecontainer.cpp @@ -32,7 +32,6 @@ ParticleContainer::ParticleContainer(ParticleContainer *parent, ParticleContainer::~ParticleContainer() { - clearLocally(); if (mDelParent) delete mNext; } @@ -56,7 +55,10 @@ ParticleList::ParticleList(ParticleContainer *parent, bool delParent): ParticleContainer(parent, delParent) {} -ParticleList::~ParticleList() = default; +ParticleList::~ParticleList() +{ + clearLocally(); +} void ParticleList::addLocally(Particle *particle) { @@ -114,7 +116,10 @@ ParticleVector::ParticleVector(ParticleContainer *parent, bool delParent): ParticleContainer(parent, delParent) {} -ParticleVector::~ParticleVector() = default; +ParticleVector::~ParticleVector() +{ + clearLocally(); +} void ParticleVector::setLocally(int index, Particle *particle) { diff --git a/src/particlecontainer.h b/src/particlecontainer.h index 5656a7fd..519553ab 100644 --- a/src/particlecontainer.h +++ b/src/particlecontainer.h @@ -51,7 +51,7 @@ public: /** * Kills and removes all particle effects (only in this container) */ - virtual void clearLocally() {} + virtual void clearLocally() = 0; /** * Sets the positions of all elements -- cgit v1.2.3-70-g09d2