Skip to content

Commit 7ed87c6

Browse files
committed
Merge pull request #1455 from Oslandia/fix_inverted
Inverted polygons: fix memory leaks
2 parents 8005eab + 1613d84 commit 7ed87c6

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

src/core/qgsgeometry.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6420,12 +6420,10 @@ QgsGeometry *QgsGeometry::unaryUnion( const QList<QgsGeometry*> &geometryList )
64206420
QList<GEOSGeometry*> geoms;
64216421
foreach( QgsGeometry* g, geometryList )
64226422
{
6423-
// const cast: it is ok here, since the pointers will only be used to be stored
6424-
// in a list for a call to union
6425-
geoms.append( const_cast<GEOSGeometry*>(g->asGeos()) );
6423+
geoms.append( GEOSGeom_clone(g->asGeos()) );
64266424
}
6427-
GEOSGeometry* unioned = _makeUnion( geoms );
6425+
GEOSGeometry *geomUnion = _makeUnion( geoms );
64286426
QgsGeometry *ret = new QgsGeometry();
6429-
ret->fromGeos( unioned );
6427+
ret->fromGeos( geomUnion );
64306428
return ret;
64316429
}

src/core/symbology-ng/qgsinvertedpolygonrenderer.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ void QgsInvertedPolygonRenderer::startRender( QgsRenderContext& context, const Q
7373
mSubRenderer->startRender( context, fields );
7474

7575
mFeaturesCategories.clear();
76+
mSymbolCategories.clear();
7677
mFeatureDecorations.clear();
7778
mFields = fields;
7879

@@ -279,6 +280,13 @@ void QgsInvertedPolygonRenderer::stopRender( QgsRenderContext& context )
279280
}
280281
mSubRenderer->renderFeature( feat, mContext );
281282
}
283+
for ( FeatureCategoryVector::iterator cit = mFeaturesCategories.begin(); cit != mFeaturesCategories.end(); ++cit )
284+
{
285+
foreach( QgsGeometry* g, cit->geometries )
286+
{
287+
delete g;
288+
}
289+
}
282290

283291
// when no features are visible, we still have to draw the exterior rectangle
284292
// warning: when sub renderers have more than one possible symbols,

src/gui/symbology-ng/qgssinglesymbolrendererv2widget.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ QgsSingleSymbolRendererV2Widget::~QgsSingleSymbolRendererV2Widget()
8080
delete mRenderer;
8181

8282
delete mSelector;
83+
84+
delete mDataDefinedMenus;
8385
}
8486

8587

0 commit comments

Comments
 (0)