id summary reporter owner description type status priority milestone component version severity resolution keywords cc 738 It seems OGR uses reference counting inconsistently, what result in memory leak. mbrudka@… Mateusz Łoskot "OGR uses reference counting for some object to manage the life cycle of objects as well as to decrease OGR memory requirements. In particular SpatialReferenceSystems are reference counted. While reference counting is consistent in OGRProj4CT, namely OGRSpatialReference are deleted when counter falls below 1, in OGRGeometry eg. OGRGeometry::~OGRGeometry and OGRGeometry::assignSpatialReference a counter is released without checking if OGRSpatialReference should be deleted. This may result in memory leak. SAMPLE FIX/WORKAROUND: The quick fix is to check if reference counter falls below 1 and eventually delete the object eg. {{{ OGRGeometry::~OGRGeometry() { if( poSRS != NULL ) { if ( poSRS->Dereference() <= 0 ) delete poSRS; } } }}} However, a better way to manage reference counted objects is to use consistently in GDAL intrusive smart pointers. If the dependency on boost libraries is accepted, then I propose to use boost::instrusive_ptr (http://www.boost.org/libs/smart_ptr/intrusive_ptr.html). If this dependency is for some reason undesirable, then a simple template (boost::instrusive_ptr is 273 lines long) for such pointers can be written. I strongly recommend such technique, as this is simple way to avoid related with reference counted memory management. " defect closed normal 1.4.2 OGR_SRS unspecified normal fixed warmerdam