Commit e87db78eb5f08ac9e94c60e2ed74dfca4a6dd224

Authored by Jürgen Knödlseder
1 parent 17039a06

Properly delete elements before removing their pointers.

Delete statements have been added to the remove() method(s) so that the elements are properly deleted before the pointers are erased.
src/fits/GFits.cpp
... ... @@ -857,6 +857,9 @@ void GFits::remove(const int& extno)
857 857 throw GException::invalid_argument(G_REMOVE1, msg);
858 858 }
859 859  
  860 + // Delete HDU
  861 + if (m_hdu[extno] != NULL) delete m_hdu[extno];
  862 +
860 863 // Erase HDU from FITS file
861 864 m_hdu.erase(m_hdu.begin() + extno);
862 865  
... ...
src/obs/GObservations.cpp
... ... @@ -400,6 +400,9 @@ void GObservations::remove(const int& index)
400 400 }
401 401 #endif
402 402  
  403 + // Delete observation
  404 + delete m_obs[index];
  405 +
403 406 // Erase observation component from container
404 407 m_obs.erase(m_obs.begin() + index);
405 408  
... ...
src/sky/GSkyRegions.cpp
... ... @@ -542,6 +542,9 @@ void GSkyRegions::remove(const int& index)
542 542 }
543 543 #endif
544 544  
  545 + // Delete region
  546 + delete m_regions[index];
  547 +
545 548 // Erase region component from container
546 549 m_regions.erase(m_regions.begin() + index);
547 550  
... ... @@ -570,6 +573,9 @@ void GSkyRegions::remove(const std::string& name)
570 573 throw GException::invalid_argument(G_REMOVE2, name);
571 574 }
572 575  
  576 + // Delete region
  577 + delete m_regions[index];
  578 +
573 579 // Erase region component from container
574 580 m_regions.erase(m_regions.begin() + index);
575 581  
... ...
src/xml/GXmlNode.cpp
... ... @@ -354,6 +354,9 @@ void GXmlNode::remove(const int& index)
354 354 }
355 355 #endif
356 356  
  357 + // Delete node
  358 + delete m_nodes[index];
  359 +
357 360 // Erase child node from container
358 361 m_nodes.erase(m_nodes.begin() + index);
359 362  
... ...