summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-02-13 18:00:11 +0100
committerThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-02-14 09:08:37 +0100
commit6bab66f3651b44d33830f75c8836f0872d2b0676 (patch)
tree59c017d1e4fcfec0cf68d0c1dc5b25fdb7664123 /src
parent91ab54b6b638c9e803e484b5252db819ad3f5872 (diff)
downloadmana-6bab66f3651b44d33830f75c8836f0872d2b0676.tar.gz
mana-6bab66f3651b44d33830f75c8836f0872d2b0676.tar.bz2
mana-6bab66f3651b44d33830f75c8836f0872d2b0676.tar.xz
mana-6bab66f3651b44d33830f75c8836f0872d2b0676.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/actorsprite.cpp4
-rw-r--r--src/particlecontainer.cpp11
-rw-r--r--src/particlecontainer.h2
3 files changed, 9 insertions, 8 deletions
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