Fix memory leaks

This commit is contained in:
Nyall Dawson 2015-05-30 09:06:12 +10:00
parent 39f4ed526d
commit e5fb5a6ad9

View File

@ -416,21 +416,21 @@ ErrorList topolTest::checkDuplicates( double tolerance, QgsVectorLayer *layer1,
QList<FeatureLayer> fls;
fls << *it << *it;
QgsGeometry* conflict = new QgsGeometry( *g1 );
QScopedPointer<QgsGeometry> conflict( new QgsGeometry( *g1 ) );
if ( isExtent )
{
if ( canvasExtentPoly->disjoint( conflict ) )
if ( canvasExtentPoly->disjoint( conflict.data() ) )
{
continue;
}
if ( canvasExtentPoly->crosses( conflict ) )
if ( canvasExtentPoly->crosses( conflict.data() ) )
{
conflict = conflict->intersection( canvasExtentPoly );
conflict.reset( conflict->intersection( canvasExtentPoly ) );
}
}
TopolErrorDuplicates* err = new TopolErrorDuplicates( bb, conflict, fls );
TopolErrorDuplicates* err = new TopolErrorDuplicates( bb, conflict.take(), fls );
errorList << err;
}
@ -543,21 +543,21 @@ ErrorList topolTest::checkOverlaps( double tolerance, QgsVectorLayer *layer1, Qg
{
QList<FeatureLayer> fls;
fls << *it << *it;
QgsGeometry* conflictGeom = g1->intersection( g2 );
QScopedPointer< QgsGeometry > conflictGeom( g1->intersection( g2 ) );
if ( isExtent )
{
if ( canvasExtentPoly->disjoint( conflictGeom ) )
if ( canvasExtentPoly->disjoint( conflictGeom.data() ) )
{
continue;
}
if ( canvasExtentPoly->crosses( conflictGeom ) )
if ( canvasExtentPoly->crosses( conflictGeom.data() ) )
{
conflictGeom = conflictGeom->intersection( canvasExtentPoly );
conflictGeom.reset( conflictGeom->intersection( canvasExtentPoly ) );
}
}
TopolErrorOverlaps* err = new TopolErrorOverlaps( bb, conflictGeom, fls );
TopolErrorOverlaps* err = new TopolErrorOverlaps( bb, conflictGeom.take(), fls );
errorList << err;
}
@ -637,6 +637,7 @@ ErrorList topolTest::checkGaps( double tolerance, QgsVectorLayer *layer1, QgsVec
QgsGeometry* polyGeom = QgsGeometry::fromPolygon( polygon );
geomList.push_back( GEOSGeom_clone_r( geosctxt, polyGeom->asGeos() ) );
delete polyGeom;
}
}
@ -954,6 +955,7 @@ ErrorList topolTest::checkPointCoveredBySegment( double tolerance, QgsVectorLaye
{
if ( canvasExtentPoly->disjoint( conflictGeom ) )
{
delete conflictGeom;
continue;
}
}
@ -1178,7 +1180,7 @@ ErrorList topolTest::checkOverlapWithLayer( double tolerance, QgsVectorLayer* la
QgsRectangle r2 = g2->boundingBox();
r.combineExtentWith( &r2 );
QgsGeometry* conflictGeom = g1->intersection( g2 );
QScopedPointer<QgsGeometry> conflictGeom( g1->intersection( g2 ) );
// could this for some reason return NULL?
if ( !conflictGeom )
{
@ -1187,13 +1189,13 @@ ErrorList topolTest::checkOverlapWithLayer( double tolerance, QgsVectorLayer* la
if ( isExtent )
{
if ( canvasExtentPoly->disjoint( conflictGeom ) )
if ( canvasExtentPoly->disjoint( conflictGeom.data() ) )
{
continue;
}
if ( canvasExtentPoly->crosses( conflictGeom ) )
if ( canvasExtentPoly->crosses( conflictGeom.data() ) )
{
conflictGeom = conflictGeom->intersection( canvasExtentPoly );
conflictGeom.reset( conflictGeom->intersection( canvasExtentPoly ) );
}
}
@ -1204,7 +1206,7 @@ ErrorList topolTest::checkOverlapWithLayer( double tolerance, QgsVectorLayer* la
fl.feature = f;
fl.layer = layer2;
fls << *it << fl;
TopolErrorIntersection* err = new TopolErrorIntersection( r, conflictGeom, fls );
TopolErrorIntersection* err = new TopolErrorIntersection( r, conflictGeom.take(), fls );
errorList << err;
}
@ -1279,6 +1281,7 @@ ErrorList topolTest::checkPointCoveredByLineEnds( double tolerance, QgsVectorLay
{
if ( canvasExtentPoly->disjoint( conflictGeom ) )
{
delete conflictGeom;
continue;
}
}
@ -1372,25 +1375,24 @@ ErrorList topolTest::checkyLineEndsCoveredByPoints( double tolerance, QgsVectorL
if ( !touched )
{
QgsGeometry* conflictGeom = new QgsGeometry( *g1 );
QScopedPointer<QgsGeometry> conflictGeom( new QgsGeometry( *g1 ) );
if ( isExtent )
{
if ( canvasExtentPoly->disjoint( conflictGeom ) )
if ( canvasExtentPoly->disjoint( conflictGeom.data() ) )
{
continue;
}
if ( canvasExtentPoly->crosses( conflictGeom ) )
if ( canvasExtentPoly->crosses( conflictGeom.data() ) )
{
conflictGeom = conflictGeom->intersection( canvasExtentPoly );
conflictGeom.reset( conflictGeom->intersection( canvasExtentPoly ) );
}
}
QList<FeatureLayer> fls;
fls << *it << *it;
//bb.scale(10);
TopolErrorLineEndsNotCoveredByPoints* err = new TopolErrorLineEndsNotCoveredByPoints( bb, conflictGeom, fls );
TopolErrorLineEndsNotCoveredByPoints* err = new TopolErrorLineEndsNotCoveredByPoints( bb, conflictGeom.take(), fls );
errorList << err;
}
}
@ -1456,6 +1458,7 @@ ErrorList topolTest::checkPointInPolygon( double tolerance, QgsVectorLayer *laye
{
if ( canvasExtentPoly->disjoint( conflictGeom ) )
{
delete conflictGeom;
continue;
}
}