Skip to content

Commit

Permalink
Use a clone of the renderer for attribute table model
Browse files Browse the repository at this point in the history
Fixes potential crash
  • Loading branch information
nyalldawson committed Oct 1, 2017
1 parent a874faf commit dfe0cba
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/gui/attributetable/qgsattributetablefiltermodel.cpp
Expand Up @@ -408,24 +408,24 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
QgsRectangle rect = mCanvas->mapSettings().mapToLayerCoordinates( layer(), mCanvas->extent() );
QgsRenderContext renderContext;
renderContext.expressionContext().appendScopes( QgsExpressionContextUtils::globalProjectLayerScopes( layer() ) );
QgsFeatureRenderer *renderer = layer()->renderer();

mFilteredFeatures.clear();

if ( !renderer )
if ( !layer()->renderer() )
{
QgsDebugMsg( "Cannot get renderer" );
return;
}

std::unique_ptr< QgsFeatureRenderer > renderer( layer()->renderer()->clone() );

const QgsMapSettings &ms = mCanvas->mapSettings();
if ( !layer()->isInScaleRange( ms.scale() ) )
{
QgsDebugMsg( "Out of scale limits" );
}
else
{
if ( renderer && renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
if ( renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
{
// setup scale
// mapRenderer()->renderContext()->scale is not automatically updated when
Expand All @@ -436,7 +436,7 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
renderContext.setRendererScale( ms.scale() );
}

filter = renderer && renderer->capabilities() & QgsFeatureRenderer::Filter;
filter = renderer->capabilities() & QgsFeatureRenderer::Filter;
}

renderer->startRender( renderContext, layer()->fields() );
Expand Down Expand Up @@ -476,7 +476,7 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()

features.close();

if ( renderer && renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
if ( renderer->capabilities() & QgsFeatureRenderer::ScaleDependent )
{
renderer->stopRender( renderContext );
}
Expand Down

0 comments on commit dfe0cba

Please sign in to comment.