浏览代码

Fixed CID 1288850

AlexVinS 9 年之前
父节点
当前提交
8b4f1fc938
共有 1 个文件被更改,包括 11 次插入3 次删除
  1. 11 3
      lib/CGameState.cpp

+ 11 - 3
lib/CGameState.cpp

@@ -2933,6 +2933,7 @@ void InfoAboutArmy::initFromArmy(const CArmedInstance *Army, bool detailed)
 
 void InfoAboutHero::assign(const InfoAboutHero & iah)
 {
+	vstd::clear_pointer(details);
 	InfoAboutArmy::operator = (iah);
 
 	details = (iah.details ? new Details(*iah.details) : nullptr);
@@ -2962,7 +2963,7 @@ InfoAboutHero::InfoAboutHero(const CGHeroInstance *h, InfoAboutHero::EInfoLevel
 
 InfoAboutHero::~InfoAboutHero()
 {
-	delete details;
+	vstd::clear_pointer(details);
 }
 
 InfoAboutHero & InfoAboutHero::operator=(const InfoAboutHero & iah)
@@ -2973,6 +2974,7 @@ InfoAboutHero & InfoAboutHero::operator=(const InfoAboutHero & iah)
 
 void InfoAboutHero::initFromHero(const CGHeroInstance *h, InfoAboutHero::EInfoLevel infoLevel)
 {
+	vstd::clear_pointer(details);
 	if(!h)
 		return;
 
@@ -3013,14 +3015,18 @@ InfoAboutTown::InfoAboutTown():
 
 }
 
-InfoAboutTown::InfoAboutTown(const CGTownInstance *t, bool detailed)
+InfoAboutTown::InfoAboutTown(const CGTownInstance *t, bool detailed):
+	details(nullptr),
+	tType(nullptr),
+	built(0),
+	fortLevel(0)
 {
 	initFromTown(t, detailed);
 }
 
 InfoAboutTown::~InfoAboutTown()
 {
-	delete details;
+	vstd::clear_pointer(details);
 }
 
 void InfoAboutTown::initFromTown(const CGTownInstance *t, bool detailed)
@@ -3032,6 +3038,8 @@ void InfoAboutTown::initFromTown(const CGTownInstance *t, bool detailed)
 	name = t->name;
 	tType = t->town;
 
+	vstd::clear_pointer(details);
+
 	if(detailed)
 	{
 		//include details about hero