cmExportSetMap: Override clear() to delete held resources
Replace the std::map<>::clear() method with one that first deletes
the cmExportSet instances held by each map entry, and then clears.
Otherwise the cmGlobalGenerator::ClearGeneratorMembers added by
commit 5cf1120f
(cmGlobalGenerator: Refactor member cleanup between
configures, 2013-11-04) leaks the cmExportSet instances.
This commit is contained in:
parent
5cf1120fbf
commit
00055ce76d
|
@ -23,7 +23,7 @@ cmExportSet* cmExportSetMap::operator[](const std::string &name)
|
||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmExportSetMap::~cmExportSetMap()
|
void cmExportSetMap::clear()
|
||||||
{
|
{
|
||||||
for(std::map<std::string, cmExportSet*>::iterator it = this->begin();
|
for(std::map<std::string, cmExportSet*>::iterator it = this->begin();
|
||||||
it != this->end();
|
it != this->end();
|
||||||
|
@ -31,4 +31,10 @@ cmExportSetMap::~cmExportSetMap()
|
||||||
{
|
{
|
||||||
delete it->second;
|
delete it->second;
|
||||||
}
|
}
|
||||||
|
this->derived::clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
cmExportSetMap::~cmExportSetMap()
|
||||||
|
{
|
||||||
|
this->clear();
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ class cmExportSet;
|
||||||
/// A name -> cmExportSet map with overloaded operator[].
|
/// A name -> cmExportSet map with overloaded operator[].
|
||||||
class cmExportSetMap : public std::map<std::string, cmExportSet*>
|
class cmExportSetMap : public std::map<std::string, cmExportSet*>
|
||||||
{
|
{
|
||||||
|
typedef std::map<std::string, cmExportSet*> derived;
|
||||||
public:
|
public:
|
||||||
/** \brief Overloaded operator[].
|
/** \brief Overloaded operator[].
|
||||||
*
|
*
|
||||||
|
@ -26,6 +27,8 @@ public:
|
||||||
*/
|
*/
|
||||||
cmExportSet* operator[](const std::string &name);
|
cmExportSet* operator[](const std::string &name);
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
|
||||||
/// Overloaded destructor deletes all member export sets.
|
/// Overloaded destructor deletes all member export sets.
|
||||||
~cmExportSetMap();
|
~cmExportSetMap();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue