Skip to content

Commit a954c3f

Browse files
committedAug 25, 2015
Fix some memory leaks
1 parent 039b4fb commit a954c3f

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed
 

‎src/core/geometry/qgsgeometry.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,13 @@ const QgsAbstractGeometryV2* QgsGeometry::geometry() const
146146
void QgsGeometry::setGeometry( QgsAbstractGeometryV2* geometry )
147147
{
148148
detach( false );
149+
if ( d->geometry )
150+
{
151+
delete d->geometry;
152+
d->geometry = 0;
153+
}
154+
removeWkbGeos();
155+
149156
d->geometry = geometry;
150157
}
151158

‎tests/src/core/testqgsexpression.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,10 +1007,14 @@ class TestQgsExpression: public QObject
10071007
QgsPolygon polygon;
10081008
polygon << polygon_ring;
10091009

1010-
QTest::newRow( "geomFromWKT Point" ) << "geom_from_wkt('" + QgsGeometry::fromPoint( point )->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPoint( point ) << false;
1011-
QTest::newRow( "geomFromWKT Line" ) << "geomFromWKT('" + QgsGeometry::fromPolyline( line )->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPolyline( line ) << false;
1012-
QTest::newRow( "geomFromWKT Polyline" ) << "geomFromWKT('" + QgsGeometry::fromPolyline( polyline )->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPolyline( polyline ) << false;
1013-
QTest::newRow( "geomFromWKT Polygon" ) << "geomFromWKT('" + QgsGeometry::fromPolygon( polygon )->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPolygon( polygon ) << false;
1010+
QScopedPointer<QgsGeometry> sourcePoint( QgsGeometry::fromPoint( point ) );
1011+
QTest::newRow( "geomFromWKT Point" ) << "geom_from_wkt('" + sourcePoint->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPoint( point ) << false;
1012+
QScopedPointer<QgsGeometry> sourceLine( QgsGeometry::fromPolyline( line ) );
1013+
QTest::newRow( "geomFromWKT Line" ) << "geomFromWKT('" + sourceLine->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPolyline( line ) << false;
1014+
QScopedPointer<QgsGeometry> sourcePolyline( QgsGeometry::fromPolyline( polyline ) );
1015+
QTest::newRow( "geomFromWKT Polyline" ) << "geomFromWKT('" + sourcePolyline->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPolyline( polyline ) << false;
1016+
QScopedPointer<QgsGeometry> sourcePolygon( QgsGeometry::fromPolygon( polygon ) );
1017+
QTest::newRow( "geomFromWKT Polygon" ) << "geomFromWKT('" + sourcePolygon->exportToWkt() + "')" << ( void* ) QgsGeometry::fromPolygon( polygon ) << false;
10141018

10151019
// GML Point
10161020
QTest::newRow( "GML Point (coordinates)" ) << "geomFromGML('<gml:Point><gml:coordinates>123,456</gml:coordinates></gml:Point>')" << ( void * ) QgsGeometry::fromPoint( point ) << false;

‎tests/src/core/testqgsgeometry.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ void TestQgsGeometry::cleanup()
211211
delete mpPolygonGeometryA;
212212
delete mpPolygonGeometryB;
213213
delete mpPolygonGeometryC;
214+
delete mpPolylineGeometryD;
214215
delete mpPainter;
215216
}
216217

@@ -456,6 +457,8 @@ void TestQgsGeometry::initTestCase()
456457

457458
void TestQgsGeometry::cleanupTestCase()
458459
{
460+
461+
459462
//
460463
// Runs once after all tests are run
461464
//

0 commit comments

Comments
 (0)
Please sign in to comment.