]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/tracktype.cpp
Plug several memory leaks
[r2c2.git] / source / 3d / tracktype.cpp
index 6dfd2a4f86c166cbb9b336b8cdbcaa42e45ba592..e402c89c5f597823e6daabde9943ef27b30d72bb 100644 (file)
@@ -12,7 +12,8 @@ namespace R2C2 {
 TrackType3D::TrackType3D(Catalogue3D &cat3d, const TrackType &tt):
        catalogue(cat3d),
        mesh(0),
-       object(0)
+       object(0),
+       own_data(false)
 {
        const Catalogue &cat = cat3d.get_catalogue();
        const vector<TrackPart> &parts = tt.get_parts();
@@ -53,6 +54,8 @@ TrackType3D::TrackType3D(Catalogue3D &cat3d, const TrackType &tt):
                object = new GL::Object;
                object->set_mesh(mesh);
                object->set_technique(&catalogue.get<GL::Technique>(cat.get_track_technique()));
+
+               own_data = true;
        }
  
        unsigned paths = tt.get_paths();
@@ -76,6 +79,11 @@ TrackType3D::~TrackType3D()
 {
        for(vector<GL::Mesh *>::iterator i=path_meshes.begin(); i!=path_meshes.end(); ++i)
                delete *i;
+       if(own_data)
+       {
+               delete object;
+               delete mesh;
+       }
 }
 
 const GL::Mesh &TrackType3D::get_path_mesh(unsigned p) const