Skip to content

Commit 1a199d0

Browse files
committed
Use unique_ptr for owned pointer
1 parent 7ef6520 commit 1a199d0

File tree

2 files changed

+10
-18
lines changed

2 files changed

+10
-18
lines changed

src/core/symbology/qgslegendsymbolitem.cpp

+6-14
Original file line numberDiff line numberDiff line change
@@ -32,28 +32,22 @@ QgsLegendSymbolItem::QgsLegendSymbolItem( QgsSymbol *symbol, const QString &labe
3232
}
3333

3434
QgsLegendSymbolItem::QgsLegendSymbolItem( const QgsLegendSymbolItem &other )
35-
3635
{
3736
*this = other;
3837
}
3938

40-
QgsLegendSymbolItem::~QgsLegendSymbolItem()
41-
{
42-
delete mSymbol;
43-
delete mDataDefinedSizeLegendSettings;
44-
}
39+
QgsLegendSymbolItem::~QgsLegendSymbolItem() = default;
4540

4641
QgsLegendSymbolItem &QgsLegendSymbolItem::operator=( const QgsLegendSymbolItem &other )
4742
{
4843
if ( this == &other )
4944
return *this;
5045

51-
setSymbol( other.mSymbol );
46+
mSymbol.reset( other.mSymbol ? other.mSymbol->clone() : nullptr );
5247
mLabel = other.mLabel;
5348
mKey = other.mKey;
5449
mCheckable = other.mCheckable;
55-
delete mDataDefinedSizeLegendSettings;
56-
mDataDefinedSizeLegendSettings = other.mDataDefinedSizeLegendSettings ? new QgsDataDefinedSizeLegend( *other.mDataDefinedSizeLegendSettings ) : nullptr;
50+
mDataDefinedSizeLegendSettings.reset( other.mDataDefinedSizeLegendSettings ? new QgsDataDefinedSizeLegend( *other.mDataDefinedSizeLegendSettings ) : nullptr );
5751
mOriginalSymbolPointer = other.mOriginalSymbolPointer;
5852
mScaleMinDenom = other.mScaleMinDenom;
5953
mScaleMaxDenom = other.mScaleMaxDenom;
@@ -78,18 +72,16 @@ bool QgsLegendSymbolItem::isScaleOK( double scale ) const
7872

7973
void QgsLegendSymbolItem::setSymbol( QgsSymbol *s )
8074
{
81-
delete mSymbol;
82-
mSymbol = s ? s->clone() : nullptr;
75+
mSymbol.reset( s );
8376
mOriginalSymbolPointer = s;
8477
}
8578

8679
void QgsLegendSymbolItem::setDataDefinedSizeLegendSettings( QgsDataDefinedSizeLegend *settings )
8780
{
88-
delete mDataDefinedSizeLegendSettings;
89-
mDataDefinedSizeLegendSettings = settings;
81+
mDataDefinedSizeLegendSettings.reset( settings );
9082
}
9183

9284
QgsDataDefinedSizeLegend *QgsLegendSymbolItem::dataDefinedSizeLegendSettings() const
9385
{
94-
return mDataDefinedSizeLegendSettings;
86+
return mDataDefinedSizeLegendSettings.get();
9587
}

src/core/symbology/qgslegendsymbolitem.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class CORE_EXPORT QgsLegendSymbolItem
5353
QgsLegendSymbolItem &operator=( const QgsLegendSymbolItem &other );
5454

5555
//! Returns associated symbol. May be null.
56-
QgsSymbol *symbol() const { return mSymbol; }
56+
QgsSymbol *symbol() const { return mSymbol.get(); }
5757
//! Returns text label
5858
QString label() const { return mLabel; }
5959
//! Returns unique identifier of the rule for identification of the item within renderer
@@ -107,8 +107,8 @@ class CORE_EXPORT QgsLegendSymbolItem
107107
QgsDataDefinedSizeLegend *dataDefinedSizeLegendSettings() const;
108108

109109
private:
110-
//! symbol. owned by the struct. can be null.
111-
QgsSymbol *mSymbol = nullptr;
110+
//! Legend symbol -- may be null.
111+
std::unique_ptr< QgsSymbol > mSymbol;
112112
//! label of the item (may be empty or non-unique)
113113
QString mLabel;
114114
//! unique identifier of the symbol item (within renderer)
@@ -122,7 +122,7 @@ class CORE_EXPORT QgsLegendSymbolItem
122122
* optional pointer to data-defined legend size settings - if set, the output legend
123123
* node should be QgsDataDefinedSizeLegendNode rather than ordinary QgsSymbolLegendNode
124124
*/
125-
QgsDataDefinedSizeLegend *mDataDefinedSizeLegendSettings = nullptr;
125+
std::unique_ptr< QgsDataDefinedSizeLegend > mDataDefinedSizeLegendSettings;
126126

127127
// additional data that may be used for filtering
128128

0 commit comments

Comments
 (0)