Author: aschnell
Date: Mon Apr 20 17:58:05 2009
New Revision: 56866
URL: http://svn.opensuse.org/viewcvs/yast?rev=56866&view=rev
Log:
- fixed memory leak
Modified:
trunk/storage/libstorage/src/DmPartCo.cc
trunk/storage/libstorage/src/Storage.cc
trunk/storage/libstorage/src/Storage.h
trunk/storage/libstorage/src/StorageTmpl.h
Modified: trunk/storage/libstorage/src/DmPartCo.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/storage/libstorage/src/DmPartCo.cc?rev=56866&r1=56865&r2=56866&view=diff
==============================================================================
--- trunk/storage/libstorage/src/DmPartCo.cc (original)
+++ trunk/storage/libstorage/src/DmPartCo.cc Mon Apr 20 17:58:05 2009
@@ -308,7 +308,7 @@
void
DmPartCo::getVolumes( ProcPart& ppart )
{
- vols.clear();
+ clearPointerList(vols);
num_part = 0;
Disk::PartPair pp = disk->partPair();
Disk::PartIter i = pp.begin();
Modified: trunk/storage/libstorage/src/Storage.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/storage/libstorage/src/Storage.cc?rev=56866&r1=56865&r2=56866&view=diff
==============================================================================
--- trunk/storage/libstorage/src/Storage.cc (original)
+++ trunk/storage/libstorage/src/Storage.cc Mon Apr 20 17:58:05 2009
@@ -262,24 +262,18 @@
}
}
-void Storage::deleteClist( CCont& co )
- {
- for( CIter i=co.begin(); i!=co.end(); ++i )
- delete *i;
- co.clear();
- }
void Storage::deleteBackups()
{
for (map::iterator i = backups.begin(); i != backups.end(); ++i)
- deleteClist( i->second );
+ clearPointerList(i->second);
backups.clear();
}
Storage::~Storage()
{
logContainersAndVolumes(logdir);
- deleteClist(cont);
+ clearPointerList(cont);
deleteBackups();
if( !tempdir.empty() && access( tempdir.c_str(), R_OK )==0 )
{
@@ -297,7 +291,7 @@
void Storage::rescanEverything()
{
y2mil("rescan everything");
- deleteClist(cont);
+ clearPointerList(cont);
detectObjects();
}
@@ -5565,7 +5559,7 @@
map::iterator i = backups.find( name );
if( i!=backups.end())
{
- deleteClist( i->second );
+ clearPointerList(i->second);
backups.erase(i);
}
else
@@ -5587,10 +5581,10 @@
y2mil("name:" << name);
if( ret==0 )
{
- map::iterator b = backups.find( name );
+ map::const_iterator b = backups.find(name);
if( b!=backups.end())
{
- cont.clear();
+ clearPointerList(cont);
for (CCIter i = b->second.begin(); i != b->second.end(); ++i)
cont.push_back( (*i)->getCopy() );
}
Modified: trunk/storage/libstorage/src/Storage.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/storage/libstorage/src/Storage.h?rev=56866&r1=56865&r2=56866&view=diff
==============================================================================
--- trunk/storage/libstorage/src/Storage.h (original)
+++ trunk/storage/libstorage/src/Storage.h Mon Apr 20 17:58:05 2009
@@ -1693,7 +1693,6 @@
bool ignoreError(list<commitAction>::const_iterator i, const list<commitAction>& al) const;
string backupStates() const;
void detectObjects();
- void deleteClist( CCont& co );
void deleteBackups();
void setFreeInfo( const string& device, unsigned long long df_free,
unsigned long long resize_free,
Modified: trunk/storage/libstorage/src/StorageTmpl.h
URL: http://svn.opensuse.org/viewcvs/yast/trunk/storage/libstorage/src/StorageTmpl.h?rev=56866&r1=56865&r2=56866&view=diff
==============================================================================
--- trunk/storage/libstorage/src/StorageTmpl.h (original)
+++ trunk/storage/libstorage/src/StorageTmpl.h Mon Apr 20 17:58:05 2009
@@ -204,6 +204,16 @@
}
+ template <class Type>
+ void clearPointerList(list& l)
+ {
+ for (typename list::iterator i = l.begin(); i != l.end(); ++i)
+ delete *i;
+ l.clear();
+ }
+
+
+
template
inline unsigned int lengthof (T (&)[sz]) { return sz; }
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org