[Cppunit-devel] Memory leak in CppUnit 1.9.14
Brought to you by:
blep
|
From: <swn...@he...> - 2004-06-02 15:56:36
|
Dear CppUnit developers,
there is a memory leak in TestResultCollector. Here is the original file =
TestResultCollector.cpp:
TestResultCollector::~TestResultCollector()
{
TestFailures::iterator itFailure =3D m_failures.begin();
while ( itFailure !=3D m_failures.end() )
delete *itFailure++;
}
void=20
TestResultCollector::reset()
{
TestSuccessListener::reset();
ExclusiveZone zone( m_syncObject );=20
m_testErrors =3D 0;
m_tests.clear();
m_failures.clear(); // *** LEAK: m_failures has been fed TestFailure =
clones which are now lost! ***
}
This should be changed to look something like this:
void TestResultCollector::cleanUpResources() // *** Must be declared in =
header file. ***
{
TestFailures::iterator itFailure =3D m_failures.begin();
while ( itFailure !=3D m_failures.end() )
delete *itFailure++;
}
TestResultCollector::~TestResultCollector()
{
cleanUpResources(); // *** Just as before ***
}
void=20
TestResultCollector::reset()
{
TestSuccessListener::reset();
ExclusiveZone zone( m_syncObject );=20
m_testErrors =3D 0;
m_tests.clear();
cleanUpResources(); // *** Leak no longer present. ***
m_failures.clear();
}
Cheers,
DR. JOHANNES HEIDENHAIN GmbH
Christoph K=F6gl
--------------------------------------------------------
mailto:swn...@he...
tel +49 / 8669 / 31-1008
fax +49 / 8669 / 32-1008
--------------------------------------------------------
DR. JOHANNES HEIDENHAIN GmbH
Dr.-Johannes-Heidenhain-Str. 5
83301 Traunreut
GERMANY
http://www.heidenhain.de
|