Code Cleanup

- Addressed valgrind complaints by freeing allocations for commands and columns.
  This leaves one complaint about getpwuid, which is either an optional free,
  or not valid, depending on OS.  (Thanks to Bryce Harrington).
This commit is contained in:
Paul Beckingham 2012-03-18 00:27:47 -04:00
parent 3f233e4644
commit 1274f2ba07
6 changed files with 34 additions and 2 deletions

View file

@ -66,6 +66,13 @@ Context::Context ()
////////////////////////////////////////////////////////////////////////////////
Context::~Context ()
{
std::map<std::string, Command*>::iterator com;
for (com = commands.begin (); com != commands.end (); ++com)
delete com->second;
std::map<std::string, Column*>::iterator col;
for (col = columns.begin (); col != columns.end (); ++col)
delete col->second;
}
////////////////////////////////////////////////////////////////////////////////
@ -564,6 +571,10 @@ const std::vector <std::string> Context::getCommands () const
////////////////////////////////////////////////////////////////////////////////
void Context::assumeLocations ()
{
// Note that this pointer is deliberately not free()'d, even though valgrind
// complains about it. It is either not necessary, or forbidden, depending
// on OS.
// Set up default locations.
struct passwd* pw = getpwuid (getuid ());
if (!pw)

View file

@ -56,6 +56,16 @@ ViewTask::ViewTask ()
{
}
////////////////////////////////////////////////////////////////////////////////
ViewTask::~ViewTask ()
{
std::vector <Column*>::iterator i;
for (i = _columns.begin (); i != _columns.end (); ++i)
delete *i;
_columns.clear ();
}
////////////////////////////////////////////////////////////////////////////////
// |<---------- terminal width ---------->|
//

View file

@ -39,7 +39,7 @@ class ViewTask
{
public:
ViewTask ();
~ViewTask () {}
~ViewTask ();
// View specifications.
void add (Column* column) { _columns.push_back (column); }

View file

@ -55,6 +55,16 @@ ViewText::ViewText ()
{
}
////////////////////////////////////////////////////////////////////////////////
ViewText::~ViewText ()
{
std::vector <Column*>::iterator i;
for (i = _columns.begin (); i != _columns.end (); ++i)
delete *i;
_columns.clear ();
}
////////////////////////////////////////////////////////////////////////////////
int ViewText::addRow ()
{

View file

@ -39,7 +39,7 @@ class ViewText
{
public:
ViewText ();
~ViewText () {}
~ViewText ();
// View specifications.
void add (Column* col) { _columns.push_back (col); }