From 09428bc03221484d27fe102ed436c08f6a09d866 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 7 Jan 2014 14:32:55 +0300 Subject: fix leak in atatardb with duplicate avatars. --- src/resources/db/avatardb.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/resources/db/avatardb.cpp') diff --git a/src/resources/db/avatardb.cpp b/src/resources/db/avatardb.cpp index a97059c2c..1df47e3ef 100644 --- a/src/resources/db/avatardb.cpp +++ b/src/resources/db/avatardb.cpp @@ -75,7 +75,12 @@ void AvatarDB::loadXmlFile(const std::string &fileName) if (!xmlNameEqual(avatarNode, "avatar")) continue; - BeingInfo *const currentInfo = new BeingInfo; + const int id = XML::getProperty(avatarNode, "id", 0); + BeingInfo *currentInfo = nullptr; + if (mAvatarInfos.find(id) != mAvatarInfos.end()) + currentInfo = mAvatarInfos[id]; + else + currentInfo = new BeingInfo; currentInfo->setName(XML::langProperty( // TRANSLATORS: unknown info name @@ -112,8 +117,7 @@ void AvatarDB::loadXmlFile(const std::string &fileName) } } currentInfo->setDisplay(display); - - mAvatarInfos[XML::getProperty(avatarNode, "id", 0)] = currentInfo; + mAvatarInfos[id] = currentInfo; } mLoaded = true; -- cgit v1.2.3-60-g2f50