From: Mikko Rasa Date: Thu, 25 Feb 2010 20:56:20 +0000 (+0000) Subject: Fix memory leaks and other bad stuff X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=02c9a9779954d993cb73fe5f7a72b0847e87f633;p=r2c2.git Fix memory leaks and other bad stuff --- diff --git a/source/3d/catalogue.cpp b/source/3d/catalogue.cpp index 50f0484..a5c584b 100644 --- a/source/3d/catalogue.cpp +++ b/source/3d/catalogue.cpp @@ -28,6 +28,12 @@ Catalogue3D::Catalogue3D(const Catalogue &c): build_endpoint_mesh(); } +Catalogue3D::~Catalogue3D() +{ + for(map::iterator i=tracks.begin(); i!=tracks.end(); ++i) + delete i->second; +} + const TrackType3D &Catalogue3D::get_track(const TrackType &tt) const { map::const_iterator i = tracks.find(&tt); diff --git a/source/3d/catalogue.h b/source/3d/catalogue.h index b27683c..ccbf588 100644 --- a/source/3d/catalogue.h +++ b/source/3d/catalogue.h @@ -27,6 +27,7 @@ private: public: Catalogue3D(const Catalogue &); + ~Catalogue3D(); const Catalogue &get_catalogue() const { return catalogue; } const TrackType3D &get_track(const TrackType &) const; diff --git a/source/3d/overlay.cpp b/source/3d/overlay.cpp index 5f07ac8..bc206f9 100644 --- a/source/3d/overlay.cpp +++ b/source/3d/overlay.cpp @@ -30,6 +30,8 @@ Overlay3D::~Overlay3D() { for(map::iterator i=graphics.begin(); i!=graphics.end(); ++i) delete i->second; + for(map::iterator i=icons.begin(); i!=icons.end(); ++i) + delete i->second; } void Overlay3D::set_label(const Track3D &track, const string &label) diff --git a/source/designer/designer.cpp b/source/designer/designer.cpp index 2528909..9965568 100644 --- a/source/designer/designer.cpp +++ b/source/designer/designer.cpp @@ -126,9 +126,12 @@ Designer::Designer(int argc, char **argv): Designer::~Designer() { + delete overlay; delete root; - delete layout; + delete pipeline; + delete base_object; delete layout_3d; + delete layout; delete cat_layout_3d; } @@ -296,6 +299,7 @@ void Designer::key_press(unsigned code, unsigned mod, wchar_t) selection.clear(); for(set::iterator i=tracks.begin(); i!=tracks.end(); ++i) { + overlay->clear(layout_3d->get_track(**i)); layout->remove_track(**i); delete *i; } diff --git a/source/libmarklin/layout.cpp b/source/libmarklin/layout.cpp index afd5f03..4e6620b 100644 --- a/source/libmarklin/layout.cpp +++ b/source/libmarklin/layout.cpp @@ -25,6 +25,8 @@ Layout::~Layout() { for(set::iterator i=tracks.begin(); i!=tracks.end(); ++i) delete *i; + for(map::iterator i=routes.begin(); i!=routes.end(); ++i) + delete i->second; } void Layout::add_track(Track &t)