diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-02-16 01:25:53 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-02-16 01:25:53 +0300 |
commit | a674fef72eb6f8bc1ba25ef6c7aef0193a0e59dc (patch) | |
tree | 7ef98150a2e2a36a5c667531b2f613457d6c7d8d /src/simpleanimation.cpp | |
parent | 59321c4bac45456a141639ea371238823bd9f708 (diff) | |
download | manaplus-a674fef72eb6f8bc1ba25ef6c7aef0193a0e59dc.tar.gz manaplus-a674fef72eb6f8bc1ba25ef6c7aef0193a0e59dc.tar.bz2 manaplus-a674fef72eb6f8bc1ba25ef6c7aef0193a0e59dc.tar.xz manaplus-a674fef72eb6f8bc1ba25ef6c7aef0193a0e59dc.zip |
Fix crash with particle effects with animation/rotation without emitter.
This bug first was detected in brazilian tmw server.
Diffstat (limited to 'src/simpleanimation.cpp')
-rw-r--r-- | src/simpleanimation.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/simpleanimation.cpp b/src/simpleanimation.cpp index 3e5b40817..67c697348 100644 --- a/src/simpleanimation.cpp +++ b/src/simpleanimation.cpp @@ -40,7 +40,8 @@ SimpleAnimation::SimpleAnimation(Animation *const animation) : mAnimationTime(0), mAnimationPhase(0), mCurrentFrame(&mAnimation->mFrames[0]), - mInitialized(true) + mInitialized(true), + mImageSet(nullptr) { } @@ -50,7 +51,8 @@ SimpleAnimation::SimpleAnimation(const XmlNodePtr animationNode, mAnimationTime(0), mAnimationPhase(0), mCurrentFrame(nullptr), - mInitialized(false) + mInitialized(false), + mImageSet(nullptr) { initializeAnimation(animationNode, dyePalettes); if (mAnimation) @@ -63,6 +65,11 @@ SimpleAnimation::~SimpleAnimation() { delete mAnimation; mAnimation = nullptr; + if (mImageSet) + { + mImageSet->decRef(); + mImageSet = nullptr; + } } bool SimpleAnimation::draw(Graphics *const graphics, @@ -231,6 +238,6 @@ void SimpleAnimation::initializeAnimation(const XmlNodePtr animationNode, } } - imageset->decRef(); +// imageset->decRef(); mInitialized = true; } |