From: Flightgear-commitlogs <ma...@hy...> - 2013-09-08 18:24:12
|
The branch, master has been updated - Log ----------------------------------------------------------------- commit ecb1653eee3aa1ce792d5061f1ebfc9f09db6b11 Author: Peter Sadrozinski Date: Sun Sep 8 14:04:17 2013 -0400 fix memory leak in tgconstruct - Summary ------------------------------------------------------------- src/BuildTiles/Main/tgconstruct.cxx | 4 ---- src/BuildTiles/Main/tgconstruct.hxx | 2 +- src/BuildTiles/Main/tgconstruct_poly.cxx | 4 +--- src/BuildTiles/Main/tglandclass.hxx | 10 ++++++++-- 4 files changed, 10 insertions(+), 10 deletions(-) - Diff ---------------------------------------------------------------- diff --git a/src/BuildTiles/Main/tgconstruct.cxx b/src/BuildTiles/Main/tgconstruct.cxx index 24f8490..7b39ef7 100644 --- a/src/BuildTiles/Main/tgconstruct.cxx +++ b/src/BuildTiles/Main/tgconstruct.cxx @@ -49,10 +49,6 @@ TGConstruct::TGConstruct( const TGAreaDefinitions& areas, unsigned int s, SGLock // Destructor TGConstruct::~TGConstruct() { - // land class polygons - polys_in.clear(); - polys_clipped.clear(); - // All Nodes nodes.clear(); } diff --git a/src/BuildTiles/Main/tgconstruct.hxx b/src/BuildTiles/Main/tgconstruct.hxx index 1d56f13..83d2c9b 100644 --- a/src/BuildTiles/Main/tgconstruct.hxx +++ b/src/BuildTiles/Main/tgconstruct.hxx @@ -34,7 +34,7 @@ #include <simgear/threads/SGQueue.hxx> #include <Array/array.hxx> -#include <terragear//tg_nodes.hxx> +#include <terragear/tg_nodes.hxx> #include <landcover/landcover.hxx> #include "tglandclass.hxx" diff --git a/src/BuildTiles/Main/tgconstruct_poly.cxx b/src/BuildTiles/Main/tgconstruct_poly.cxx index bca12f5..e1ba81f 100644 --- a/src/BuildTiles/Main/tgconstruct_poly.cxx +++ b/src/BuildTiles/Main/tgconstruct_poly.cxx @@ -45,8 +45,7 @@ int TGConstruct::LoadLandclassPolys( void ) { string base = bucket.gen_base_path(); string poly_path; int total_polys_read = 0; - - polys_in.clear(); + tgPolygon poly; // load 2D polygons from all directories provided for ( i = 0; i < (int)load_dirs.size(); ++i ) { @@ -82,7 +81,6 @@ int TGConstruct::LoadLandclassPolys( void ) { SG_LOG( SG_GENERAL, SG_DEBUG, " Load " << count << " polys from " << p.realpath() ); for ( unsigned int i=0; i<count; i++ ) { - tgPolygon poly; poly.LoadFromGzFile( fp ); area = area_defs.get_area_priority( poly.GetFlag() ); material = area_defs.get_area_name( area ); diff --git a/src/BuildTiles/Main/tglandclass.hxx b/src/BuildTiles/Main/tglandclass.hxx index cb7deaa..c6b0b15 100644 --- a/src/BuildTiles/Main/tglandclass.hxx +++ b/src/BuildTiles/Main/tglandclass.hxx @@ -45,8 +45,11 @@ class TGLandclass { public: TGLandclass() {}; + ~TGLandclass() {}; void init( unsigned int num_areas) { + clear(); + for (unsigned int i=0; i<num_areas; i++) { tgpolygon_list lc; lc.clear(); @@ -65,18 +68,21 @@ public: { return polys[area][poly]; } - inline tgPolygon & get_poly( unsigned int area, unsigned int poly ) + inline tgPolygon& get_poly( unsigned int area, unsigned int poly ) { return polys[area][poly]; } inline void add_poly( unsigned int area, const tgPolygon& p ) { if ( area > polys.capacity() ) { - SG_LOG( SG_CLIPPER, SG_ALERT, " area out of bounds " << area << " of " << polys.capacity() ); + SG_LOG( SG_GENERAL, SG_ALERT, " area out of bounds " << area << " of " << polys.capacity() ); exit(0); } polys[area].push_back( p ); } + + // TODO : Let's get rid of this - it was a memory leak, and the polygons should really be modified in place + // NOTE - this will be considerable work, so leaving as is for now (but fix the leak) inline void set_poly( unsigned int area, unsigned int poly, const tgPolygon& p ) { polys[area][poly] = p; ----------------------------------------------------------------------- TerraGear / Custom Scenery |