Skip to content

Commit b57b9d7

Browse files
committedSep 13, 2018
Add unique_ptr in nodeLiteralFromOgcFilter
1 parent 180d6b3 commit b57b9d7

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed
 

‎src/core/qgsogcutils.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3313,23 +3313,21 @@ QgsExpressionNode *QgsOgcUtilsExpressionFromFilter::nodeLiteralFromOgcFilter( co
33133313
return nullptr;
33143314
}
33153315

3316-
QgsExpressionNode *root = nullptr;
3316+
std::unique_ptr<QgsExpressionNode> root;
33173317

33183318
// the literal content can have more children (e.g. CDATA section, text, ...)
33193319
QDomNode childNode = element.firstChild();
33203320
while ( !childNode.isNull() )
33213321
{
3322-
QgsExpressionNode *operand = nullptr;
3322+
std::unique_ptr<QgsExpressionNode> operand;
33233323

33243324
if ( childNode.nodeType() == QDomNode::ElementNode )
33253325
{
33263326
// found a element node (e.g. PropertyName), convert it
33273327
QDomElement operandElem = childNode.toElement();
3328-
operand = nodeFromOgcFilter( operandElem );
3328+
operand.reset( nodeFromOgcFilter( operandElem ) );
33293329
if ( !operand )
33303330
{
3331-
delete root;
3332-
33333331
mErrorMessage = QObject::tr( "'%1' is an invalid or not supported content for %2:Literal" ).arg( operandElem.tagName(), mPrefix );
33343332
return nullptr;
33353333
}
@@ -3370,26 +3368,26 @@ QgsExpressionNode *QgsOgcUtilsExpressionFromFilter::nodeLiteralFromOgcFilter( co
33703368
value = d;
33713369
}
33723370

3373-
operand = new QgsExpressionNodeLiteral( value );
3371+
operand.reset( new QgsExpressionNodeLiteral( value ) );
33743372
if ( !operand )
33753373
continue;
33763374
}
33773375

33783376
// use the concat operator to merge the ogc:Literal children
33793377
if ( !root )
33803378
{
3381-
root = operand;
3379+
root = std::move( operand );
33823380
}
33833381
else
33843382
{
3385-
root = new QgsExpressionNodeBinaryOperator( QgsExpressionNodeBinaryOperator::boConcat, root, operand );
3383+
root.reset( new QgsExpressionNodeBinaryOperator( QgsExpressionNodeBinaryOperator::boConcat, root.release(), operand.release() ) );
33863384
}
33873385

33883386
childNode = childNode.nextSibling();
33893387
}
33903388

33913389
if ( root )
3392-
return root;
3390+
return root.release();
33933391

33943392
return nullptr;
33953393
}

0 commit comments

Comments
 (0)
Please sign in to comment.