Skip to content

Commit

Permalink
Fix memory leaks, inconsistent transferral of ownership
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson authored and nirvn committed Nov 7, 2019
1 parent c7c0899 commit 394de6e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
8 changes: 4 additions & 4 deletions src/core/qgsvectorlayerlabelprovider.cpp
Expand Up @@ -139,7 +139,7 @@ QList<QgsLabelFeature *> QgsVectorLayerLabelProvider::labelFeatures( QgsRenderCo
while ( fit.nextFeature( fet ) )
{
QgsGeometry obstacleGeometry;
std::unique_ptr< QgsSymbol > symbol;
const QgsSymbol *symbol = nullptr;
if ( mRenderer )
{
QgsSymbolList symbols = mRenderer->originalSymbolsForFeature( fet, ctx );
Expand All @@ -150,12 +150,12 @@ QList<QgsLabelFeature *> QgsVectorLayerLabelProvider::labelFeatures( QgsRenderCo
}
if ( !symbols.isEmpty() )
{
symbol.reset( symbols.at( 0 )->clone() );
symbolScope = QgsExpressionContextUtils::updateSymbolScope( symbol.get(), symbolScope );
symbol = symbols.at( 0 );
symbolScope = QgsExpressionContextUtils::updateSymbolScope( symbol, symbolScope );
}
}
ctx.expressionContext().setFeature( fet );
registerFeature( fet, ctx, obstacleGeometry, symbol.release() );
registerFeature( fet, ctx, obstacleGeometry, symbol );
}

if ( ctx.expressionContext().lastScope() == symbolScope )
Expand Down
8 changes: 4 additions & 4 deletions src/core/qgsvectorlayerrenderer.cpp
Expand Up @@ -417,21 +417,21 @@ void QgsVectorLayerRenderer::drawRendererLevels( QgsFeatureIterator &fit )
{
QgsGeometry obstacleGeometry;
QgsSymbolList symbols = mRenderer->originalSymbolsForFeature( fet, context );
std::unique_ptr< QgsSymbol > symbol;
QgsSymbol *symbol = nullptr;
if ( !symbols.isEmpty() && fet.geometry().type() == QgsWkbTypes::PointGeometry )
{
obstacleGeometry = QgsVectorLayerLabelProvider::getPointObstacleGeometry( fet, context, symbols );
}

if ( !symbols.isEmpty() )
{
symbol.reset( symbols.at( 0 )->clone() );
QgsExpressionContextUtils::updateSymbolScope( symbol.get(), symbolScope );
symbol = symbols.at( 0 );
QgsExpressionContextUtils::updateSymbolScope( symbol, symbolScope );
}

if ( mLabelProvider )
{
mLabelProvider->registerFeature( fet, context, obstacleGeometry, symbol.release() );
mLabelProvider->registerFeature( fet, context, obstacleGeometry, symbol );
}
if ( mDiagramProvider )
{
Expand Down

0 comments on commit 394de6e

Please sign in to comment.