From f48a79ca85edaf4deb2ce06a10b569db36d0d7d9 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Fri, 24 Jul 2020 09:11:15 +1000 Subject: [PATCH] Fix accidental overwrite using wrong symbol settings --- src/app/3d/qgssymbol3dwidget.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/3d/qgssymbol3dwidget.cpp b/src/app/3d/qgssymbol3dwidget.cpp index d0ff73da9bb..12da28f3fef 100644 --- a/src/app/3d/qgssymbol3dwidget.cpp +++ b/src/app/3d/qgssymbol3dwidget.cpp @@ -156,6 +156,8 @@ void QgsSymbol3DWidget::saveSymbol() if ( saveDlg.name().isEmpty() ) return; + std::unique_ptr< QgsAbstract3DSymbol > newSymbol( symbol() ); + // check if there is no symbol with same name if ( QgsStyle::defaultStyle()->symbol3DNames().contains( saveDlg.name() ) ) { @@ -173,9 +175,9 @@ void QgsSymbol3DWidget::saveSymbol() QStringList symbolTags = saveDlg.tags().split( ',' ); // add new symbol to style and re-populate the list - QgsAbstract3DSymbol *newSymbol = symbol(); - QgsStyle::defaultStyle()->addSymbol3D( saveDlg.name(), newSymbol ); + QgsAbstract3DSymbol *s = newSymbol.get(); + QgsStyle::defaultStyle()->addSymbol3D( saveDlg.name(), newSymbol.release() ); // make sure the symbol is stored - QgsStyle::defaultStyle()->saveSymbol3D( saveDlg.name(), newSymbol, saveDlg.isFavorite(), symbolTags ); + QgsStyle::defaultStyle()->saveSymbol3D( saveDlg.name(), s, saveDlg.isFavorite(), symbolTags ); }