Fix some memory leaks

This commit is contained in:
Nyall Dawson 2021-09-22 16:39:57 +10:00
parent 7a2640248c
commit ac72a345c0
5 changed files with 20 additions and 15 deletions

View File

@ -14,6 +14,7 @@
***************************************************************************/ ***************************************************************************/
#include "qgsappmaptools.h" #include "qgsappmaptools.h"
#include "qgisapp.h"
#include "qgsmaptool.h" #include "qgsmaptool.h"
#include "qgsmaptoolselect.h" #include "qgsmaptoolselect.h"
#include "qgsmaptoolidentifyaction.h" #include "qgsmaptoolidentifyaction.h"
@ -101,7 +102,7 @@ QgsStreamDigitizingSettingsAction::QgsStreamDigitizingSettingsAction( QWidget *p
QgsSettingsRegistryCore::settingsDigitizingStreamTolerance.setValue( value ); QgsSettingsRegistryCore::settingsDigitizingStreamTolerance.setValue( value );
} ); } );
QWidget *w = new QWidget(); QWidget *w = new QWidget( parent );
w->setLayout( gLayout ); w->setLayout( gLayout );
setDefaultWidget( w ); setDefaultWidget( w );
} }
@ -181,7 +182,7 @@ QgsAppMapTools::QgsAppMapTools( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockW
mTools.insert( Tool::EditMeshFrame, new QgsMapToolEditMeshFrame( canvas ) ); mTools.insert( Tool::EditMeshFrame, new QgsMapToolEditMeshFrame( canvas ) );
mTools.insert( Tool::AnnotationEdit, new QgsMapToolModifyAnnotation( canvas, cadDock ) ); mTools.insert( Tool::AnnotationEdit, new QgsMapToolModifyAnnotation( canvas, cadDock ) );
mStreamDigitizingSettingsAction = new QgsStreamDigitizingSettingsAction(); mStreamDigitizingSettingsAction = new QgsStreamDigitizingSettingsAction( QgisApp::instance() );
} }
QgsAppMapTools::~QgsAppMapTools() QgsAppMapTools::~QgsAppMapTools()

View File

@ -1914,6 +1914,8 @@ QgisApp::~QgisApp()
mSnappingUtils = nullptr; mSnappingUtils = nullptr;
delete mUserInputDockWidget; delete mUserInputDockWidget;
mUserInputDockWidget = nullptr; mUserInputDockWidget = nullptr;
delete mMapStylingDock;
mMapStylingDock = nullptr;
QgsGui::instance()->nativePlatformInterface()->cleanup(); QgsGui::instance()->nativePlatformInterface()->cleanup();
@ -3372,7 +3374,7 @@ void QgisApp::createToolBars()
mDigitizeModeToolButton = new QToolButton(); mDigitizeModeToolButton = new QToolButton();
mDigitizeModeToolButton->setPopupMode( QToolButton::MenuButtonPopup ); mDigitizeModeToolButton->setPopupMode( QToolButton::MenuButtonPopup );
QMenu *digitizeMenu = new QMenu(); QMenu *digitizeMenu = new QMenu( mDigitizeModeToolButton );
digitizeMenu->addAction( mActionDigitizeWithCurve ); digitizeMenu->addAction( mActionDigitizeWithCurve );
digitizeMenu->addAction( mActionStreamDigitize ); digitizeMenu->addAction( mActionStreamDigitize );
digitizeMenu->addSeparator(); digitizeMenu->addSeparator();
@ -3854,7 +3856,7 @@ void QgisApp::createToolBars()
QToolButton *meshForceByLinesToolButton = new QToolButton(); QToolButton *meshForceByLinesToolButton = new QToolButton();
meshForceByLinesToolButton->setPopupMode( QToolButton::MenuButtonPopup ); meshForceByLinesToolButton->setPopupMode( QToolButton::MenuButtonPopup );
QMenu *meshForceByLineMenu = new QMenu(); QMenu *meshForceByLineMenu = new QMenu( meshForceByLinesToolButton );
//meshForceByLineMenu->addActions( editMeshMapTool->forceByLinesActions() ); //meshForceByLineMenu->addActions( editMeshMapTool->forceByLinesActions() );
meshForceByLinesToolButton->setDefaultAction( editMeshMapTool->defaultForceAction() ); meshForceByLinesToolButton->setDefaultAction( editMeshMapTool->defaultForceAction() );
@ -3875,7 +3877,7 @@ void QgisApp::createToolBars()
QToolButton *annotationLayerToolButton = new QToolButton(); QToolButton *annotationLayerToolButton = new QToolButton();
annotationLayerToolButton->setPopupMode( QToolButton::MenuButtonPopup ); annotationLayerToolButton->setPopupMode( QToolButton::MenuButtonPopup );
QMenu *annotationLayerMenu = new QMenu(); QMenu *annotationLayerMenu = new QMenu( annotationLayerToolButton );
annotationLayerMenu->addAction( mActionCreateAnnotationLayer ); annotationLayerMenu->addAction( mActionCreateAnnotationLayer );
annotationLayerMenu->addAction( mMainAnnotationLayerProperties ); annotationLayerMenu->addAction( mMainAnnotationLayerProperties );
annotationLayerToolButton->setMenu( annotationLayerMenu ); annotationLayerToolButton->setMenu( annotationLayerMenu );

View File

@ -294,6 +294,9 @@ void QgsBabelFormatRegistry::reloadFromSettings()
const QString trkDownload = settings.value( QStringLiteral( "%1/trkdownload" ).arg( baseKey ), QVariant(), section ).toString(); const QString trkDownload = settings.value( QStringLiteral( "%1/trkdownload" ).arg( baseKey ), QVariant(), section ).toString();
const QString trkUpload = settings.value( QStringLiteral( "%1/trkupload" ).arg( baseKey ), QVariant(), section ).toString(); const QString trkUpload = settings.value( QStringLiteral( "%1/trkupload" ).arg( baseKey ), QVariant(), section ).toString();
// don't leak memory if there's already a device with this name...
delete mDevices.value( device );
mDevices[device] = new QgsBabelGpsDeviceFormat( wptDownload, mDevices[device] = new QgsBabelGpsDeviceFormat( wptDownload,
wptUpload, wptUpload,
rteDownload, rteDownload,

View File

@ -2652,6 +2652,7 @@ QgsApplication::ApplicationMembers::~ApplicationMembers()
delete mSourceCache; delete mSourceCache;
delete mCalloutRegistry; delete mCalloutRegistry;
delete mSymbolLayerRegistry; delete mSymbolLayerRegistry;
delete mExternalStorageRegistry;
delete mTaskManager; delete mTaskManager;
delete mNetworkContentFetcherRegistry; delete mNetworkContentFetcherRegistry;
delete mClassificationMethodRegistry; delete mClassificationMethodRegistry;

View File

@ -326,15 +326,14 @@ void QgsOptionsDialogBase::setCurrentPage( const QString &page )
void QgsOptionsDialogBase::addPage( const QString &title, const QString &tooltip, const QIcon &icon, QWidget *widget, const QStringList &path ) void QgsOptionsDialogBase::addPage( const QString &title, const QString &tooltip, const QIcon &icon, QWidget *widget, const QStringList &path )
{ {
QListWidgetItem *item = new QListWidgetItem();
item->setIcon( icon );
item->setText( title );
item->setToolTip( tooltip );
int newPage = -1; int newPage = -1;
if ( mOptListWidget ) if ( mOptListWidget )
{ {
QListWidgetItem *item = new QListWidgetItem();
item->setIcon( icon );
item->setText( title );
item->setToolTip( tooltip );
mOptListWidget->addItem( item ); mOptListWidget->addItem( item );
} }
else if ( mOptTreeModel ) else if ( mOptTreeModel )
@ -409,13 +408,12 @@ void QgsOptionsDialogBase::insertPage( const QString &title, const QString &tool
{ {
//found the "before" page //found the "before" page
QListWidgetItem *item = new QListWidgetItem();
item->setIcon( icon );
item->setText( title );
item->setToolTip( tooltip );
if ( mOptListWidget ) if ( mOptListWidget )
{ {
QListWidgetItem *item = new QListWidgetItem();
item->setIcon( icon );
item->setText( title );
item->setToolTip( tooltip );
mOptListWidget->insertItem( page, item ); mOptListWidget->insertItem( page, item );
} }
else if ( mOptTreeModel ) else if ( mOptTreeModel )