Skip to content

Commit 7b1861e

Browse files
committed
Memory safety
1 parent b3ef029 commit 7b1861e

4 files changed

+15
-13
lines changed

src/app/qgslayertreeviewembeddedindicator.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ void QgsLayerTreeViewEmbeddedIndicatorProvider::onAddedChildren( QgsLayerTreeNod
5353
}
5454
}
5555

56-
QgsLayerTreeViewIndicator *QgsLayerTreeViewEmbeddedIndicatorProvider::newIndicator( const QString &project )
56+
std::unique_ptr< QgsLayerTreeViewIndicator > QgsLayerTreeViewEmbeddedIndicatorProvider::newIndicator( const QString &project )
5757
{
58-
QgsLayerTreeViewIndicator *indicator = new QgsLayerTreeViewIndicator( this );
58+
std::unique_ptr< QgsLayerTreeViewIndicator > indicator = qgis::make_unique< QgsLayerTreeViewIndicator >( this );
5959
indicator->setIcon( mIcon );
6060
indicator->setToolTip( tr( "Embedded from <b>%1</b>" ).arg( project ) );
61-
mIndicators.insert( indicator );
61+
mIndicators.insert( indicator.get() );
6262
return indicator;
6363
}
6464

@@ -85,5 +85,5 @@ void QgsLayerTreeViewEmbeddedIndicatorProvider::addIndicatorForEmbeddedLayer( Qg
8585
}
8686

8787
// it does not exist: need to create a new one
88-
mLayerTreeView->addIndicator( node, newIndicator( project ) );
88+
mLayerTreeView->addIndicator( node, newIndicator( project ).release() );
8989
}

src/app/qgslayertreeviewembeddedindicator.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "qgslayertreeviewindicator.h"
2020

2121
#include <QSet>
22+
#include <memory>
2223

2324
class QgsLayerTreeNode;
2425
class QgsLayerTreeView;
@@ -35,7 +36,7 @@ class QgsLayerTreeViewEmbeddedIndicatorProvider : public QObject
3536
void onAddedChildren( QgsLayerTreeNode *node, int indexFrom, int indexTo );
3637

3738
private:
38-
QgsLayerTreeViewIndicator *newIndicator( const QString &project );
39+
std::unique_ptr< QgsLayerTreeViewIndicator > newIndicator( const QString &project );
3940
void addIndicatorForEmbeddedLayer( QgsLayerTreeNode *node );
4041

4142
private:

src/app/qgslayertreeviewfilterindicator.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -151,19 +151,19 @@ void QgsLayerTreeViewFilterIndicatorProvider::onIndicatorClicked( const QModelIn
151151
vlayer->setSubsetString( qb.sql() );
152152
}
153153

154-
QgsLayerTreeViewIndicator *QgsLayerTreeViewFilterIndicatorProvider::newIndicator( const QString &filter )
154+
std::unique_ptr<QgsLayerTreeViewIndicator> QgsLayerTreeViewFilterIndicatorProvider::newIndicator( const QString &filter )
155155
{
156-
QgsLayerTreeViewIndicator *indicator = new QgsLayerTreeViewIndicator( this );
156+
std::unique_ptr< QgsLayerTreeViewIndicator > indicator = qgis::make_unique< QgsLayerTreeViewIndicator >( this );
157157
indicator->setIcon( mIcon );
158-
updateIndicator( indicator, filter );
159-
connect( indicator, &QgsLayerTreeViewIndicator::clicked, this, &QgsLayerTreeViewFilterIndicatorProvider::onIndicatorClicked );
160-
mIndicators.insert( indicator );
158+
updateIndicator( indicator.get(), filter );
159+
connect( indicator.get(), &QgsLayerTreeViewIndicator::clicked, this, &QgsLayerTreeViewFilterIndicatorProvider::onIndicatorClicked );
160+
mIndicators.insert( indicator.get() );
161161
return indicator;
162162
}
163163

164164
void QgsLayerTreeViewFilterIndicatorProvider::updateIndicator( QgsLayerTreeViewIndicator *indicator, const QString &filter )
165165
{
166-
indicator->setToolTip( QString( "<b>%1:</b><br>%2" ).arg( tr( "Filter" ) ).arg( filter ) );
166+
indicator->setToolTip( QStringLiteral( "<b>%1:</b><br>%2" ).arg( tr( "Filter" ), filter ) );
167167
}
168168

169169

@@ -185,7 +185,7 @@ void QgsLayerTreeViewFilterIndicatorProvider::addOrRemoveIndicator( QgsLayerTree
185185
}
186186

187187
// it does not exist: need to create a new one
188-
mLayerTreeView->addIndicator( node, newIndicator( filter ) );
188+
mLayerTreeView->addIndicator( node, newIndicator( filter ).release() );
189189
}
190190
else
191191
{

src/app/qgslayertreeviewfilterindicator.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "qgslayertreeviewindicator.h"
2020

2121
#include <QSet>
22+
#include <memory>
2223

2324
class QgsLayerTreeNode;
2425
class QgsLayerTreeView;
@@ -45,7 +46,7 @@ class QgsLayerTreeViewFilterIndicatorProvider : public QObject
4546
void onIndicatorClicked( const QModelIndex &index );
4647

4748
private:
48-
QgsLayerTreeViewIndicator *newIndicator( const QString &filter );
49+
std::unique_ptr< QgsLayerTreeViewIndicator > newIndicator( const QString &filter );
4950
void updateIndicator( QgsLayerTreeViewIndicator *indicator, const QString &filter );
5051
void addOrRemoveIndicator( QgsLayerTreeNode *node, QgsVectorLayer *vlayer );
5152

0 commit comments

Comments
 (0)