Changeset 20244

Show
Ignore:
Timestamp:
05/22/07 07:18:45 (1 year ago)
Author:
patrick
Message:

Merges from the trunk:

r20236: Fix memory leak in and DeviceFactory?.

r20237: Fix memory leak in [PositionProxy?] position filter code.

r20238: Fix a few more position filter memory leaks.

r20239: Test for NULL before deleting.

r20243: Moved destructor implementations [for BaseTypeFactory?,

DeviceFactory?, and PositionProxy?] into the .cpp file. There is no
need for these to be inlined, especially when they are virtual.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • juggler/branches/2.2/modules/gadgeteer/gadget/Type/BaseTypeFactory.cpp

    r19729 r20244  
    5050// Initialize the singleton ptr 
    5151vprSingletonImpWithInitFunc( BaseTypeFactory, hackLoadKnownDevices ); 
     52 
     53BaseTypeFactory::~BaseTypeFactory() 
     54{ 
     55   typedef std::vector<BaseTypeConstructorBase*>::iterator iter_type; 
     56   for ( iter_type itr = mConstructors.begin(); itr != mConstructors.end(); ++itr ) 
     57   { 
     58      if (NULL != *itr) 
     59      { 
     60         delete *itr; 
     61         *itr = NULL; 
     62      } 
     63   } 
     64   mConstructors.clear(); 
     65} 
    5266 
    5367/** 
  • juggler/branches/2.2/modules/gadgeteer/gadget/Type/BaseTypeFactory.h

    r19729 r20244  
    9292      vprASSERT(mConstructors.size() == 0); 
    9393   } 
     94 
     95   ~BaseTypeFactory(); 
    9496 
    9597   // This should be replaced with device plugins. 
  • juggler/branches/2.2/modules/gadgeteer/gadget/Type/DeviceFactory.cpp

    r19854 r20244  
    7373vprSingletonImpWithInitFunc(DeviceFactory, loadKnownDevices); 
    7474 
     75DeviceFactory::~DeviceFactory() 
     76{ 
     77   typedef std::vector<DeviceConstructorBase*>::iterator iter_type; 
     78   for ( iter_type itr = mConstructors.begin(); itr != mConstructors.end(); ++itr ) 
     79   { 
     80      if (NULL != *itr) 
     81      { 
     82         delete *itr; 
     83         *itr = NULL; 
     84      } 
     85   } 
     86   mConstructors.clear(); 
     87} 
     88 
    7589/** 
    7690 * Registers all the devices that I know about. 
  • juggler/branches/2.2/modules/gadgeteer/gadget/Type/DeviceFactory.h

    r19729 r20244  
    5656   } 
    5757 
     58   ~DeviceFactory(); 
     59 
    5860   /** 
    5961    * Performs static loading of devices that cannot be loaded through the 
  • juggler/branches/2.2/modules/gadgeteer/gadget/Type/Position.cpp

    r19729 r20244  
    5252 
    5353Position::~Position() 
    54 {;} 
     54
     55   for (std::vector<PositionFilter*>::iterator itr = mPositionFilters.begin(); 
     56        itr != mPositionFilters.end(); itr++) 
     57   { 
     58      if (NULL != *itr) 
     59      { 
     60         delete *itr; 
     61         *itr = NULL; 
     62      } 
     63   } 
     64   mPositionFilters.clear(); 
     65
    5566 
    5667 
     
    97108               << "be loaded.\n" 
    98109               << vprDEBUG_FLUSH; 
     110 
     111            delete new_filter; 
     112            new_filter = NULL; 
    99113         } 
    100114      } 
  • juggler/branches/2.2/modules/gadgeteer/gadget/Type/PositionProxy.cpp

    r19729 r20244  
    4646{ 
    4747 
     48PositionProxy::~PositionProxy() 
     49{ 
     50   typedef std::vector<PositionFilter*>::iterator iter_type; 
     51   for ( iter_type itr = mPositionFilters.begin(); itr != mPositionFilters.end(); ++itr ) 
     52   { 
     53      if (NULL != *itr) 
     54      { 
     55         delete *itr; 
     56         *itr = NULL; 
     57      } 
     58   } 
     59   mPositionFilters.clear(); 
     60} 
     61 
    4862std::string PositionProxy::getElementType() 
    4963{ 
     
    93107      if(new_filter != NULL) 
    94108      { 
    95          new_filter->config(cur_filter); 
    96          mPositionFilters.push_back(new_filter); 
     109         if (new_filter->config(cur_filter)) 
     110         { 
     111            mPositionFilters.push_back(new_filter); 
     112         } 
     113         else 
     114         { 
     115            vprDEBUG( vprDBG_ERROR, vprDBG_CONFIG_STATUS_LVL ) 
     116               << "   Filter [" << i << "]: Type:" << filter_id 
     117               << " configuration failed; " << filter_id << " will NOT " 
     118               << "be loaded.\n" 
     119               << vprDEBUG_FLUSH; 
     120 
     121            delete new_filter; 
     122            new_filter = NULL; 
     123         } 
    97124      } 
    98125      else 
  • juggler/branches/2.2/modules/gadgeteer/gadget/Type/PositionProxy.h

    r19729 r20244  
    7171   {;} 
    7272 
    73    virtual ~PositionProxy() {;} 
     73   virtual ~PositionProxy(); 
    7474 
    7575   /**