summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-03-23 18:37:20 +0300
committerAndrei Karas <akaras@inbox.ru>2015-03-23 18:37:20 +0300
commit95514a8b6c14ddc86d9b2dfe87d21534b949493d (patch)
treea88806b0a690f7227e7546509f61ed1144854754
parent37fd6d2434c63f02fb8e67e120fb285f41c6cca0 (diff)
downloadmanaplus-95514a8b6c14ddc86d9b2dfe87d21534b949493d.tar.gz
manaplus-95514a8b6c14ddc86d9b2dfe87d21534b949493d.tar.bz2
manaplus-95514a8b6c14ddc86d9b2dfe87d21534b949493d.tar.xz
manaplus-95514a8b6c14ddc86d9b2dfe87d21534b949493d.zip
Fix memory leak in map animations.
-rw-r--r--src/resources/map/map.cpp11
-rw-r--r--src/resources/map/map.h3
2 files changed, 12 insertions, 2 deletions
diff --git a/src/resources/map/map.cpp b/src/resources/map/map.cpp
index 84f1d1049..18e3dc7f5 100644
--- a/src/resources/map/map.cpp
+++ b/src/resources/map/map.cpp
@@ -1487,3 +1487,14 @@ void Map::setMusicFile(const std::string &file)
{
setProperty("music", file);
}
+
+void Map::addAnimation(const int gid, TileAnimation *const animation)
+{
+ std::map<int, TileAnimation*>::iterator it = mTileAnimations.find(gid);
+ if (it != mTileAnimations.end())
+ {
+ logger->log("duplicate map animation with gid = %d", gid);
+ delete (*it).second;
+ }
+ mTileAnimations[gid] = animation;
+}
diff --git a/src/resources/map/map.h b/src/resources/map/map.h
index ade7de0be..e33a83d6a 100644
--- a/src/resources/map/map.h
+++ b/src/resources/map/map.h
@@ -214,8 +214,7 @@ class Map final : public Properties, public ConfigListener
/**
* Adds a tile animation to the map
*/
- void addAnimation(const int gid, TileAnimation *const animation)
- { mTileAnimations[gid] = animation; }
+ void addAnimation(const int gid, TileAnimation *const animation);
void setDrawLayersFlags(const MapType::MapType &n)
{ mDrawLayersFlags = n; }