Skip to content

Commit

Permalink
Safer memory management
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Nov 27, 2018
1 parent 1a199d0 commit 2a03d2b
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/app/qgsapplayertreeviewmenuprovider.cpp
Expand Up @@ -796,9 +796,9 @@ void QgsAppLayerTreeViewMenuProvider::setSymbolLegendNodeColor( const QColor &co
if ( !originalSymbol )
return;

QgsSymbol *newSymbol = originalSymbol->clone();
std::unique_ptr< QgsSymbol > newSymbol( originalSymbol->clone() );
newSymbol->setColor( color );
node->setSymbol( newSymbol );
node->setSymbol( newSymbol.release() );
if ( QgsVectorLayer *layer = qobject_cast<QgsVectorLayer *>( QgsProject::instance()->mapLayer( layerId ) ) )
{
layer->emitStyleChanged();
Expand Down
5 changes: 3 additions & 2 deletions src/core/layertree/qgslayertreemodellegendnode.cpp
Expand Up @@ -203,12 +203,13 @@ void QgsSymbolLegendNode::setSymbol( QgsSymbol *symbol )
if ( !symbol )
return;

std::unique_ptr< QgsSymbol > s( symbol ); // this method takes ownership of symbol
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mLayerNode->layer() );
if ( !vlayer || !vlayer->renderer() )
return;

mItem.setSymbol( symbol );
vlayer->renderer()->setLegendSymbolItem( mItem.ruleKey(), symbol );
mItem.setSymbol( s.get() ); // doesn't transfer ownership
vlayer->renderer()->setLegendSymbolItem( mItem.ruleKey(), s.release() ); // DOES transfer ownership!

mPixmap = QPixmap();

Expand Down

0 comments on commit 2a03d2b

Please sign in to comment.