Skip to content

Commit

Permalink
Fix leaks in layer definition loading code
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Feb 17, 2025
1 parent 358408d commit 190ddac
Showing 1 changed file with 11 additions and 15 deletions.
26 changes: 11 additions & 15 deletions src/core/qgslayerdefinition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ bool QgsLayerDefinition::loadLayerDefinition( QDomDocument doc, QgsProject *proj
{
errorMessage.clear();

QgsLayerTreeGroup *root = new QgsLayerTreeGroup();
QgsLayerTreeGroup root;

// reorder maplayer nodes based on dependencies
// dependencies have to be resolved before IDs get changed
Expand Down Expand Up @@ -174,7 +174,7 @@ bool QgsLayerDefinition::loadLayerDefinition( QDomDocument doc, QgsProject *proj
bool loadInLegend = true;
if ( !layerTreeElem.isNull() )
{
root->readChildrenFromXml( layerTreeElem, context );
root.readChildrenFromXml( layerTreeElem, context );
loadInLegend = false;
}

Expand All @@ -189,11 +189,10 @@ bool QgsLayerDefinition::loadLayerDefinition( QDomDocument doc, QgsProject *proj
layer->resolveReferences( project );
}

root->resolveReferences( project );
root.resolveReferences( project );

const QList<QgsLayerTreeNode *> nodes = root->children();
root->abandonChildren();
delete root;
const QList<QgsLayerTreeNode *> nodes = root.children();
root.abandonChildren();

switch ( insertMethod )
{
Expand Down Expand Up @@ -258,20 +257,17 @@ bool QgsLayerDefinition::exportLayerDefinition( QDomDocument doc, const QList<Qg
Q_UNUSED( errorMessage )
QDomElement qgiselm = doc.createElement( QStringLiteral( "qlr" ) );
doc.appendChild( qgiselm );
const QList<QgsLayerTreeNode *> nodes = selectedTreeNodes;
QgsLayerTreeGroup *root = new QgsLayerTreeGroup;
const auto constNodes = nodes;
for ( QgsLayerTreeNode *node : constNodes )
QgsLayerTreeGroup root;
for ( QgsLayerTreeNode *node : selectedTreeNodes )
{
QgsLayerTreeNode *newnode = node->clone();
root->addChildNode( newnode );
root.addChildNode( newnode );
}
root->writeXml( qgiselm, context );
root.writeXml( qgiselm, context );

QDomElement layerselm = doc.createElement( QStringLiteral( "maplayers" ) );
const QList<QgsLayerTreeLayer *> layers = root->findLayers();
const auto constLayers = layers;
for ( QgsLayerTreeLayer *layer : constLayers )
const QList<QgsLayerTreeLayer *> layers = root.findLayers();
for ( QgsLayerTreeLayer *layer : layers )
{
if ( ! layer->layer() )
{
Expand Down

0 comments on commit 190ddac

Please sign in to comment.